Kaynağa Gözat

Also hide base memory region from E820 map.

tags/v0.9.3
Michael Brown 18 yıl önce
ebeveyn
işleme
d82f71efd0
1 değiştirilmiş dosya ile 7 ekleme ve 2 silme
  1. 7
    2
      src/arch/i386/firmware/pcbios/hidemem.c

+ 7
- 2
src/arch/i386/firmware/pcbios/hidemem.c Dosyayı Görüntüle

@@ -50,6 +50,7 @@ extern struct segoff __text16 ( int15_vector );
50 50
  */
51 51
 enum {
52 52
 	TEXT = 0,
53
+	BASEMEM,
53 54
 };
54 55
 
55 56
 /**
@@ -59,6 +60,7 @@ enum {
59 60
  */
60 61
 struct hidden_region __data16_array ( hidden_regions, [] ) = {
61 62
 	[TEXT] = { 0, 0 },
63
+	[BASEMEM] = { 0, ( 640 * 1024 ) },
62 64
 	{ 0, 0, } /* Terminator */
63 65
 };
64 66
 #define hidden_regions __use_data16 ( hidden_regions )
@@ -72,10 +74,13 @@ struct hidden_region __data16_array ( hidden_regions, [] ) = {
72 74
 void hide_etherboot ( void ) {
73 75
 	hidden_regions[TEXT].start = virt_to_phys ( _text );
74 76
 	hidden_regions[TEXT].end = virt_to_phys ( _end );
77
+	hidden_regions[BASEMEM].start = ( rm_cs << 4 );
75 78
 
76
-	DBG ( "Hiding [%lx,%lx)\n",
79
+	DBG ( "Hiding [%lx,%lx) and [%lx,%lx)\n",
77 80
 	      ( unsigned long ) hidden_regions[TEXT].start,
78
-	      ( unsigned long ) hidden_regions[TEXT].end );
81
+	      ( unsigned long ) hidden_regions[TEXT].end,
82
+	      ( unsigned long ) hidden_regions[BASEMEM].start,
83
+	      ( unsigned long ) hidden_regions[BASEMEM].end );
79 84
 
80 85
 	hook_bios_interrupt ( 0x15, ( unsigned int ) int15,
81 86
 			      &int15_vector );

Loading…
İptal
Kaydet