diff options
Diffstat (limited to 'src/arch/i386/boot')
-rw-r--r-- | src/arch/i386/boot/coreboot_table.c | 2 | ||||
-rw-r--r-- | src/arch/i386/boot/tables.c | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/arch/i386/boot/coreboot_table.c b/src/arch/i386/boot/coreboot_table.c index b134e386e4..8ca3b877d2 100644 --- a/src/arch/i386/boot/coreboot_table.c +++ b/src/arch/i386/boot/coreboot_table.c @@ -428,7 +428,7 @@ unsigned long write_coreboot_table( printk_debug("Writing high table forward entry at 0x%08lx\n", low_table_end); head = lb_table_init(low_table_end); - lb_forward(head, rom_table_end); + lb_forward(head, (struct lb_header*)rom_table_end); lb_table_fini(head, 0); low_table_end = (unsigned long)head; diff --git a/src/arch/i386/boot/tables.c b/src/arch/i386/boot/tables.c index 5083f20564..6c13a3de15 100644 --- a/src/arch/i386/boot/tables.c +++ b/src/arch/i386/boot/tables.c @@ -66,7 +66,7 @@ struct lb_memory *write_tables(void) { unsigned long low_table_start, low_table_end; unsigned long rom_table_start, rom_table_end; -#if HAVE_MP_TABLE == 1 +#if HAVE_MP_TABLE == 1 && HAVE_LOW_TABLES == 1 unsigned long new_low_table_end; #endif @@ -114,16 +114,16 @@ struct lb_memory *write_tables(void) */ #if HAVE_ACPI_TABLES == 1 #if HAVE_HIGH_TABLES == 1 - unsigned long high_rsdp=ALIGN(high_table_end, 16); - 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 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; + } #else #if HAVE_LOW_TABLES == 1 rom_table_end = write_acpi_tables(rom_table_end); |