iPXE
|
#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/hidemem.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 | _text16_memsz ( ( size_t ) _text16_memsz ) |
#define | _data16_memsz ( ( size_t ) _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... | |
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_umalloc (physaddr_t start, physaddr_t end) |
Hide umalloc() region. More... | |
void | hide_textdata (void) |
Hide .text and .data. 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... | |
Variables | |
struct hidden_region | __attribute__ |
char | _textdata [] |
char | _etextdata [] |
char | _text16_memsz [] |
char | _data16_memsz [] |
#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 ) |
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.
|
static |
Hide region of memory from system memory map.
region | Hidden memory region |
start | Start of region |
end | End of region |
Definition at line 90 of file hidemem.c.
References ALIGN_HIDDEN, DBG, end, hidden_region::end, start, and hidden_region::start.
Referenced by hide_textdata(), and hide_umalloc().
void hide_basemem | ( | void | ) |
Hide used base memory.
Definition at line 107 of file hidemem.c.
References get_fbms(), and hidemem_base.
Referenced by hide_etherboot(), and set_fbms().
void hide_umalloc | ( | physaddr_t | start, |
physaddr_t | end | ||
) |
Hide umalloc() region.
Definition at line 119 of file hidemem.c.
References _textdata, assert(), end, hide_region(), hidemem_umalloc, start, and virt_to_phys().
Referenced by hide_etherboot(), and memtop_urealloc().
void hide_textdata | ( | void | ) |
Hide .text and .data.
Definition at line 128 of file hidemem.c.
References _etextdata, _textdata, hide_region(), hidemem_textdata, and virt_to_phys().
Referenced by hide_etherboot().
|
static |
Hide Etherboot.
Installs an INT 15 handler to edit Etherboot out of the memory map returned by the BIOS.
Definition at line 139 of file hidemem.c.
References _data16_memsz, _text16_memsz, _textdata, DBG, FAKE_E820, fake_e820(), get_fbms(), get_memmap(), hide_basemem(), hide_textdata(), hide_umalloc(), hook_bios_interrupt(), int15(), int15_vector, rm_cs, rm_ds, and virt_to_phys().
|
static |
Unhide Etherboot.
Uninstalls the INT 15 handler installed by hide_etherboot(), if possible.
Definition at line 195 of file hidemem.c.
References DBG, FAKE_E820, get_memmap(), hooked_bios_interrupts, int15(), int15_vector, rc, strerror(), unfake_e820(), and unhook_bios_interrupt().
struct startup_fn hide_etherboot_startup_fn __startup_fn | ( | STARTUP_EARLY | ) |
Hide Etherboot startup function.
struct hidden_region __attribute__ |
char _textdata[] |
Referenced by hide_etherboot(), hide_textdata(), and hide_umalloc().
char _etextdata[] |
Referenced by hide_textdata().
char _text16_memsz[] |
char _data16_memsz[] |