Also hide base memory region from E820 map.
authorMichael Brown <mcb30@etherboot.org>
Thu, 25 May 2006 00:10:58 +0000 (00:10 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 25 May 2006 00:10:58 +0000 (00:10 +0000)
src/arch/i386/firmware/pcbios/hidemem.c

index 6ea5c5b..276f9c9 100644 (file)
@@ -50,6 +50,7 @@ extern struct segoff __text16 ( int15_vector );
  */
 enum {
        TEXT = 0,
+       BASEMEM,
 };
 
 /**
@@ -59,6 +60,7 @@ enum {
  */
 struct hidden_region __data16_array ( hidden_regions, [] ) = {
        [TEXT] = { 0, 0 },
+       [BASEMEM] = { 0, ( 640 * 1024 ) },
        { 0, 0, } /* Terminator */
 };
 #define hidden_regions __use_data16 ( hidden_regions )
@@ -72,10 +74,13 @@ struct hidden_region __data16_array ( hidden_regions, [] ) = {
 void hide_etherboot ( void ) {
        hidden_regions[TEXT].start = virt_to_phys ( _text );
        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].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,
                              &int15_vector );