|
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 | |
| A hidden region of iPXE. More... | |
Macros | |
| #define | FAKE_E820 0 |
| Set to true if you want to test a fake E820 map. | |
| #define | ALIGN_HIDDEN 4096 /* 4kB page alignment should be enough */ |
| Alignment for hidden memory regions. | |
| #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. | |
| 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. | |
| 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 void | hide_region (struct hidden_region *region, physaddr_t start, physaddr_t end) |
| Hide region of memory from system memory map. | |
| void | hide_basemem (void) |
| Hide used base memory. | |
| void | hide_textdata (void) |
| Hide .text and .data. | |
| static void | int15_sync (void) |
| Synchronise in-use regions with the externally visible system memory map. | |
| void | int15_intercept (int intercept) |
| Set INT 15 interception flag. | |
| static void | hide_etherboot (void) |
| Hide Etherboot. | |
| static void | unhide_etherboot (int flags __unused) |
| Unhide Etherboot. | |
| struct startup_fn hide_etherboot_startup_fn | __startup_fn (STARTUP_EARLY) |
| Hide Etherboot startup function. | |
| PROVIDE_MEMMAP (int15, memmap_sync, int15_sync) | |
Variables | |
| char | _textdata [] |
| char | _etextdata [] |
| #define FAKE_E820 0 |
Set to true if you want to test a fake E820 map.
Definition at line 37 of file hidemem.c.
Referenced by hide_etherboot(), and unhide_etherboot().
| #define ALIGN_HIDDEN 4096 /* 4kB page alignment should be enough */ |
Alignment for hidden memory regions.
Definition at line 40 of file hidemem.c.
Referenced by hide_region().
| #define hidemem_base __use_data16 ( hidemem_base ) |
Definition at line 60 of file hidemem.c.
Referenced by __data16(), and hide_basemem().
| #define hidemem_umalloc __use_data16 ( hidemem_umalloc ) |
Definition at line 64 of file hidemem.c.
Referenced by __data16(), and int15_sync().
| #define hidemem_textdata __use_data16 ( hidemem_textdata ) |
Definition at line 68 of file hidemem.c.
Referenced by __data16(), and hide_textdata().
| #define int15_vector __use_text16 ( int15_vector ) |
Definition at line 75 of file hidemem.c.
Referenced by __text16(), hide_etherboot(), and unhide_etherboot().
| #define int15_intercept_flag __use_text16 ( int15_intercept_flag ) |
Definition at line 79 of file hidemem.c.
Referenced by __text16(), and int15_intercept().
| #define _text16_memsz ABS_VALUE ( _text16_memsz ) |
Definition at line 85 of file hidemem.c.
Referenced by ABS_SYMBOL(), hide_etherboot(), and pxe_start_nbp().
| #define _data16_memsz ABS_VALUE ( _data16_memsz ) |
Definition at line 87 of file hidemem.c.
Referenced by ABS_SYMBOL(), hide_etherboot(), and pxe_start_nbp().
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
extern |
Hidden base memory.
References __data16, and hidemem_base.
|
extern |
Hidden umalloc memory.
References __data16, and hidemem_umalloc.
|
extern |
Hidden text memory.
References __data16, and hidemem_textdata.
|
extern |
Assembly routine in e820mangler.S.
Referenced by hide_etherboot(), PROVIDE_MEMMAP(), PROVIDE_MEMMAP(), and unhide_etherboot().
|
extern |
Vector for storing original INT 15 handler.
References __text16, and int15_vector.
|
extern |
INT 15 interception flag.
References int15_intercept_flag.
|
extern |
References _text16_memsz.
|
extern |
References _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, hidden_region::start, and 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(), and PROVIDE_MEMMAP().
| 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.
Referenced by __startup_fn().
|
static |
Unhide Etherboot.
Uninstalls the INT 15 handler installed by hide_etherboot(), if possible.
Definition at line 222 of file hidemem.c.
References __unused, DBG, FAKE_E820, flags, hooked_bios_interrupts, int15(), int15_vector, memmap_dump_all(), rc, strerror(), unfake_e820(), and unhook_bios_interrupt().
Referenced by __startup_fn().
| struct startup_fn hide_etherboot_startup_fn __startup_fn | ( | STARTUP_EARLY | ) |
Hide Etherboot startup function.
References __startup_fn, hide_etherboot(), STARTUP_EARLY, and unhide_etherboot().
| PROVIDE_MEMMAP | ( | int15 | , |
| memmap_sync | , | ||
| int15_sync | ) |
References int15(), int15_sync(), and memmap_sync().
|
extern |
|
extern |