diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/i386/boot/coreboot_table.c | 2 | ||||
-rw-r--r-- | src/arch/i386/boot/tables.c | 12 | ||||
-rw-r--r-- | src/arch/i386/include/arch/smp/mpspec.h | 1 | ||||
-rw-r--r-- | src/arch/i386/smp/mpspec.c | 4 |
4 files changed, 8 insertions, 11 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); diff --git a/src/arch/i386/include/arch/smp/mpspec.h b/src/arch/i386/include/arch/smp/mpspec.h index 0e8e3553c3..4ddee0d7c7 100644 --- a/src/arch/i386/include/arch/smp/mpspec.h +++ b/src/arch/i386/include/arch/smp/mpspec.h @@ -1,6 +1,7 @@ #ifndef __ASM_MPSPEC_H #define __ASM_MPSPEC_H +#include <device/device.h> /* * Structure definitions for SMP machines following the * Intel Multiprocessing Specification 1.1 and 1.4. diff --git a/src/arch/i386/smp/mpspec.c b/src/arch/i386/smp/mpspec.c index 6746399d02..6c2585a535 100644 --- a/src/arch/i386/smp/mpspec.c +++ b/src/arch/i386/smp/mpspec.c @@ -1,5 +1,4 @@ #include <console/console.h> -#include <device/device.h> #include <device/path.h> #include <device/pci_ids.h> #include <cpu/cpu.h> @@ -23,9 +22,6 @@ unsigned char smp_compute_checksum(void *v, int len) void *smp_write_floating_table(unsigned long addr) { - struct intel_mp_floating *mf; - void *v; - /* 16 byte align the table address */ addr = (addr + 0xf) & (~0xf); return smp_write_floating_table_physaddr(addr, addr + SMP_FLOATING_TABLE_LEN); |