[coreboot] [v2] r4280 - trunk/coreboot-v2/src/arch/i386/boot

svn at coreboot.org svn at coreboot.org
Wed May 13 16:39:59 CEST 2009


Author: oxygene
Date: 2009-05-13 16:39:59 +0200 (Wed, 13 May 2009)
New Revision: 4280

Modified:
   trunk/coreboot-v2/src/arch/i386/boot/tables.c
Log:
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 at coresystems.de>
Acked-by: Myles Watson <mylesgw at gmail.com>


Modified: trunk/coreboot-v2/src/arch/i386/boot/tables.c
===================================================================
--- trunk/coreboot-v2/src/arch/i386/boot/tables.c	2009-05-13 02:48:58 UTC (rev 4279)
+++ trunk/coreboot-v2/src/arch/i386/boot/tables.c	2009-05-13 14:39:59 UTC (rev 4280)
@@ -116,14 +116,16 @@
 #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);





More information about the coreboot mailing list