|
iPXE
|
#include <string.h>#include <assert.h>#include <realmode.h>#include <biosint.h>#include <basemem.h>#include <fakee820.h>#include <ipxe/init.h>#include <ipxe/io.h>#include <ipxe/uheap.h>#include <ipxe/memmap.h>Go to the source code of this file.
Data Structures | |
| struct | hidden_region |
| A hidden region of iPXE. More... | |
Macros | |
| #define | FAKE_E820 0 |
| Set to true if you want to test a fake E820 map. More... | |
| #define | ALIGN_HIDDEN 4096 /* 4kB page alignment should be enough */ |
| Alignment for hidden memory regions. More... | |
| #define | hidemem_base __use_data16 ( hidemem_base ) |
| #define | hidemem_umalloc __use_data16 ( hidemem_umalloc ) |
| #define | hidemem_textdata __use_data16 ( hidemem_textdata ) |
| #define | int15_vector __use_text16 ( int15_vector ) |
| #define | int15_intercept_flag __use_text16 ( int15_intercept_flag ) |
| #define | _text16_memsz ABS_VALUE ( _text16_memsz ) |
| #define | _data16_memsz ABS_VALUE ( _data16_memsz ) |
Functions | |
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
| struct hidden_region | __data16 (hidemem_base) |
| Hidden base memory. More... | |
| struct hidden_region | __data16 (hidemem_umalloc) |
| Hidden umalloc memory. More... | |
| struct hidden_region | __data16 (hidemem_textdata) |
| Hidden text memory. More... | |
| void | int15 () |
| Assembly routine in e820mangler.S. More... | |
| struct segoff | __text16 (int15_vector) |
| Vector for storing original INT 15 handler. More... | |
| uint8_t | __text16 (int15_intercept_flag) |
| INT 15 interception flag. More... | |
| size_t | ABS_SYMBOL (_text16_memsz) |
| size_t | ABS_SYMBOL (_data16_memsz) |
| static void | hide_region (struct hidden_region *region, physaddr_t start, physaddr_t end) |
| Hide region of memory from system memory map. More... | |
| void | hide_basemem (void) |
| Hide used base memory. More... | |
| void | hide_textdata (void) |
| Hide .text and .data. More... | |
| static void | int15_sync (void) |
| Synchronise in-use regions with the externally visible system memory map. More... | |
| void | int15_intercept (int intercept) |
| Set INT 15 interception flag. More... | |
| static void | hide_etherboot (void) |
| Hide Etherboot. More... | |
| static void | unhide_etherboot (int flags __unused) |
| Unhide Etherboot. More... | |
| struct startup_fn hide_etherboot_startup_fn | __startup_fn (STARTUP_EARLY) |
| Hide Etherboot startup function. More... | |
| PROVIDE_MEMMAP (int15, memmap_sync, int15_sync) | |
Variables | |
| struct hidden_region | __attribute__ |
| char | _textdata [] |
| char | _etextdata [] |
| #define FAKE_E820 0 |
| #define ALIGN_HIDDEN 4096 /* 4kB page alignment should be enough */ |
| #define hidemem_base __use_data16 ( hidemem_base ) |
| #define hidemem_umalloc __use_data16 ( hidemem_umalloc ) |
| #define hidemem_textdata __use_data16 ( hidemem_textdata ) |
| #define int15_vector __use_text16 ( int15_vector ) |
| #define int15_intercept_flag __use_text16 ( int15_intercept_flag ) |
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
| struct hidden_region __data16 | ( | hidemem_base | ) |
Hidden base memory.
| struct hidden_region __data16 | ( | hidemem_umalloc | ) |
Hidden umalloc memory.
| struct hidden_region __data16 | ( | hidemem_textdata | ) |
Hidden text memory.
| void int15 | ( | ) |
Assembly routine in e820mangler.S.
Referenced by hide_etherboot(), and unhide_etherboot().
| struct segoff __text16 | ( | int15_vector | ) |
Vector for storing original INT 15 handler.
| uint8_t __text16 | ( | int15_intercept_flag | ) |
INT 15 interception flag.
| size_t ABS_SYMBOL | ( | _text16_memsz | ) |
| size_t ABS_SYMBOL | ( | _data16_memsz | ) |
|
static |
Hide region of memory from system memory map.
| region | Hidden memory region |
| start | Start of region |
| end | End of region |
Definition at line 96 of file hidemem.c.
References ALIGN_HIDDEN, DBG, end, hidden_region::end, start, and hidden_region::start.
Referenced by hide_textdata(), and int15_sync().
| void hide_basemem | ( | void | ) |
Hide used base memory.
Definition at line 113 of file hidemem.c.
References get_fbms(), and hidemem_base.
Referenced by hide_etherboot(), and set_fbms().
| void hide_textdata | ( | void | ) |
Hide .text and .data.
Definition at line 125 of file hidemem.c.
References _etextdata, _textdata, hide_region(), and hidemem_textdata.
Referenced by hide_etherboot().
|
static |
Synchronise in-use regions with the externally visible system memory map.
Definition at line 134 of file hidemem.c.
References _textdata, end, hide_region(), hidemem_umalloc, start, uheap_end, and uheap_start.
Referenced by hide_etherboot().
| void int15_intercept | ( | int | intercept | ) |
Set INT 15 interception flag.
| intercept | Intercept INT 15 calls to modify memory map |
Definition at line 155 of file hidemem.c.
References int15_intercept_flag.
Referenced by int15_describe().
|
static |
Hide Etherboot.
Installs an INT 15 handler to edit Etherboot out of the memory map returned by the BIOS.
Definition at line 167 of file hidemem.c.
References _data16_memsz, _text16_memsz, DBG, FAKE_E820, fake_e820(), get_fbms(), hide_basemem(), hide_textdata(), hook_bios_interrupt(), int15(), int15_sync(), int15_vector, memmap_dump_all(), rm_cs, and rm_ds.
|
static |
Unhide Etherboot.
Uninstalls the INT 15 handler installed by hide_etherboot(), if possible.
Definition at line 222 of file hidemem.c.
References DBG, FAKE_E820, hooked_bios_interrupts, int15(), int15_vector, memmap_dump_all(), rc, strerror(), unfake_e820(), and unhook_bios_interrupt().
| struct startup_fn hide_etherboot_startup_fn __startup_fn | ( | STARTUP_EARLY | ) |
Hide Etherboot startup function.
| PROVIDE_MEMMAP | ( | int15 | , |
| memmap_sync | , | ||
| int15_sync | |||
| ) |
| struct hidden_region __attribute__ |
| char _textdata[] |
Referenced by hide_textdata(), and int15_sync().
| char _etextdata[] |
Referenced by hide_textdata().
1.8.15