summaryrefslogtreecommitdiff
path: root/src/arch/x86/tables.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/tables.c')
-rw-r--r--src/arch/x86/tables.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/arch/x86/tables.c b/src/arch/x86/tables.c
index 273263820b..e47f1bce97 100644
--- a/src/arch/x86/tables.c
+++ b/src/arch/x86/tables.c
@@ -192,7 +192,12 @@ static uintptr_t forwarding_table = FORWARDING_TABLE_ADDR;
void arch_write_tables(uintptr_t coreboot_table)
{
size_t sz;
- unsigned long rom_table_end = 0xf0000;
+ unsigned long rom_table_end;
+
+ if (CONFIG(SHADOW_ROM_TABLE_TO_EBDA))
+ rom_table_end = CONFIG_DEFAULT_EBDA_SEGMENT << 4;
+ else
+ rom_table_end = 0xf0000;
/* This table must be between 0x0f0000 and 0x100000 */
if (CONFIG(GENERATE_PIRQ_TABLE))
@@ -224,4 +229,8 @@ void bootmem_arch_add_ranges(void)
const uintptr_t base = 0;
bootmem_add_range(base, forwarding_table - base, BM_MEM_TABLE);
+
+ /* Reserve Extend BIOS Data Area (EBDA) region explicitly */
+ bootmem_add_range((uintptr_t)CONFIG_DEFAULT_EBDA_SEGMENT << 4,
+ CONFIG_DEFAULT_EBDA_SIZE, BM_MEM_TABLE);
}