diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2009-07-21 21:38:33 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2009-07-21 21:38:33 +0000 |
commit | b657a3c9b726334aac89f1af16495eab3ebefc6b (patch) | |
tree | 428e1de09fdb4d29d783f5ea875c41d13effa893 /src/arch/i386/boot/tables.c | |
parent | 4d933dd2d686879e0c27839d3f9046e348580da8 (diff) | |
download | coreboot-b657a3c9b726334aac89f1af16495eab3ebefc6b.tar.xz |
This fixes a couple of issues with older Linux kernels (that expect an XSDT as
soon as there's an ACPI 2.0 or later table)
* add XSDT support
* add more table types
This patch will break at least the kontron (and possibly some new boards I
missed)
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4453 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch/i386/boot/tables.c')
-rw-r--r-- | src/arch/i386/boot/tables.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/arch/i386/boot/tables.c b/src/arch/i386/boot/tables.c index 9991415eda..17338ef558 100644 --- a/src/arch/i386/boot/tables.c +++ b/src/arch/i386/boot/tables.c @@ -116,7 +116,12 @@ struct lb_memory *write_tables(void) acpi_start++; } if (acpi_start != high_table_end) { - acpi_write_rsdp((acpi_rsdp_t *)rom_table_end, ((acpi_rsdp_t *)acpi_start)->rsdt_address); + acpi_rsdp_t *low_rsdp = (acpi_rsdp_t *)rom_table_end, + *high_rsdp = (acpi_rsdp_t *)acpi_start; + + acpi_write_rsdp(low_rsdp, + (acpi_rsdt_t *)(high_rsdp->rsdt_address), + (acpi_xsdt_t *)(high_rsdp->xsdt_address)); } else { printk_err("ERROR: Didn't find RSDP in high table.\n"); } |