mirror of https://github.com/ipxe/ipxe.git
Also hide base memory region from E820 map.
parent
89da833c5d
commit
d82f71efd0
|
@ -50,6 +50,7 @@ extern struct segoff __text16 ( int15_vector );
|
||||||
*/
|
*/
|
||||||
enum {
|
enum {
|
||||||
TEXT = 0,
|
TEXT = 0,
|
||||||
|
BASEMEM,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,6 +60,7 @@ enum {
|
||||||
*/
|
*/
|
||||||
struct hidden_region __data16_array ( hidden_regions, [] ) = {
|
struct hidden_region __data16_array ( hidden_regions, [] ) = {
|
||||||
[TEXT] = { 0, 0 },
|
[TEXT] = { 0, 0 },
|
||||||
|
[BASEMEM] = { 0, ( 640 * 1024 ) },
|
||||||
{ 0, 0, } /* Terminator */
|
{ 0, 0, } /* Terminator */
|
||||||
};
|
};
|
||||||
#define hidden_regions __use_data16 ( hidden_regions )
|
#define hidden_regions __use_data16 ( hidden_regions )
|
||||||
|
@ -72,10 +74,13 @@ struct hidden_region __data16_array ( hidden_regions, [] ) = {
|
||||||
void hide_etherboot ( void ) {
|
void hide_etherboot ( void ) {
|
||||||
hidden_regions[TEXT].start = virt_to_phys ( _text );
|
hidden_regions[TEXT].start = virt_to_phys ( _text );
|
||||||
hidden_regions[TEXT].end = virt_to_phys ( _end );
|
hidden_regions[TEXT].end = virt_to_phys ( _end );
|
||||||
|
hidden_regions[BASEMEM].start = ( rm_cs << 4 );
|
||||||
|
|
||||||
DBG ( "Hiding [%lx,%lx)\n",
|
DBG ( "Hiding [%lx,%lx) and [%lx,%lx)\n",
|
||||||
( unsigned long ) hidden_regions[TEXT].start,
|
( unsigned long ) hidden_regions[TEXT].start,
|
||||||
( unsigned long ) hidden_regions[TEXT].end );
|
( unsigned long ) hidden_regions[TEXT].end,
|
||||||
|
( unsigned long ) hidden_regions[BASEMEM].start,
|
||||||
|
( unsigned long ) hidden_regions[BASEMEM].end );
|
||||||
|
|
||||||
hook_bios_interrupt ( 0x15, ( unsigned int ) int15,
|
hook_bios_interrupt ( 0x15, ( unsigned int ) int15,
|
||||||
&int15_vector );
|
&int15_vector );
|
||||||
|
|
Loading…
Reference in New Issue