50,6 → 50,7 |
size_t hardcoded_unmapped_kdata_size = 0; |
|
uintptr_t last_frame = 0; |
uintptr_t end_frame = 0; |
|
static void init_e820_memory(pfn_t minconf) |
{ |
73,8 → 74,10 |
e820table[i].size, FRAME_SIZE)) |
last_frame = |
ALIGN_UP(e820table[i].base_address + e820table[i].size, FRAME_SIZE); |
} |
} |
} |
|
end_frame = last_frame; |
} |
|
static char *e820names[] = { |
113,16 → 116,14 |
|
if (config.cpu_active == 1) { |
minconf = 1; |
|
#ifdef CONFIG_SMP |
minconf = max(minconf, |
ADDR2PFN(AP_BOOT_OFFSET + hardcoded_unmapped_ktext_size + |
hardcoded_unmapped_kdata_size)); |
#endif |
#ifdef CONFIG_SIMICS_FIX |
minconf = max(minconf, ADDR2PFN(0x10000)); |
#endif |
init_e820_memory(minconf); |
|
|
/* Reserve frame 0 (BIOS data) */ |
frame_mark_unavailable(0, 1); |
|
131,12 → 132,7 |
frame_mark_unavailable(AP_BOOT_OFFSET >> FRAME_WIDTH, |
(hardcoded_unmapped_ktext_size + |
hardcoded_unmapped_kdata_size) >> FRAME_WIDTH); |
|
#ifdef CONFIG_SIMICS_FIX |
/* Don't know why, but these addresses help */ |
frame_mark_unavailable(0xd000 >> FRAME_WIDTH, 3); |
#endif |
#endif |
} |
} |
|