Declaring memory between 0xa0000 - 0x10000 confuses windows, so don't
do that.
Add capability to remove mappings in the memory mapping code.
remove_e820(i);
}
}
- insert_e820(i, start, size, type);
- i++;
+ if (type != E820_HOLE) {
+ insert_e820(i, start, size, type);
+ i++;
+ }
// Remove all existing items that are completely overlapped.
while (i<e820_count) {
e = &e820_list[i];
#define E820_ACPI 3
#define E820_NVS 4
#define E820_UNUSABLE 5
+#define E820_HOLE ((u32)-1) // Useful for removing entries
struct e820entry {
u64 start;
add_e820(0xfffc0000, 256*1024, E820_RESERVED);
}
+ // Don't declare any memory between 0xa0000 and 0x100000
+ add_e820(0xa0000, 0x50000, E820_HOLE);
+
// Mark known areas as reserved.
add_e820((u32)MAKE_FARPTR(SEG_EBDA, 0), EBDA_SIZE * 1024, E820_RESERVED);
add_e820((u32)MAKE_FARPTR(SEG_BIOS, 0), 0x10000, E820_RESERVED);