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
This commit is contained in:
parent
4b35354d39
commit
8f047de352
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue