summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrick Georgi <patrick.georgi@coresystems.de>2009-05-13 14:39:59 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2009-05-13 14:39:59 +0000
commit8f047de352d26c353c1c6bc9649a4616fa66bbd6 (patch)
tree0b08f6af57a1ba9a2355d73927ef20957f167a00 /src
parent4b35354d399d4ee201cd8f652335d8e1b1a79f7b (diff)
Make ACPI with low and high tables work again. The RSDP contained a
bogus RSDT pointer due to a wrong order of commands. Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de> Acked-by: Myles Watson <mylesgw@gmail.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4280 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/boot/tables.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/arch/i386/boot/tables.c b/src/arch/i386/boot/tables.c
index 6c13a3de15..f6f7625f75 100644
--- a/src/arch/i386/boot/tables.c
+++ b/src/arch/i386/boot/tables.c
@@ -116,14 +116,16 @@ struct lb_memory *write_tables(void)
#if HAVE_HIGH_TABLES == 1
#if HAVE_LOW_TABLES == 1
unsigned long high_rsdp=ALIGN(high_table_end, 16);
- unsigned long rsdt_location=(unsigned long*)(((acpi_rsdp_t*)high_rsdp)->rsdt_address);
- acpi_write_rsdp(rom_table_end, rsdt_location);
- rom_table_end = ALIGN(ALIGN(rom_table_end, 16) + sizeof(acpi_rsdp_t), 16);
#endif
if (high_tables_base) {
high_table_end = write_acpi_tables(high_table_end);
high_table_end = (high_table_end+1023) & ~1023;
}
+#if HAVE_LOW_TABLES == 1
+ unsigned long rsdt_location=(unsigned long*)(((acpi_rsdp_t*)high_rsdp)->rsdt_address);
+ acpi_write_rsdp(rom_table_end, rsdt_location);
+ rom_table_end = ALIGN(ALIGN(rom_table_end, 16) + sizeof(acpi_rsdp_t), 16);
+#endif
#else
#if HAVE_LOW_TABLES == 1
rom_table_end = write_acpi_tables(rom_table_end);