summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/i386/boot/coreboot_table.c2
-rw-r--r--src/arch/i386/boot/tables.c12
-rw-r--r--src/arch/i386/include/arch/smp/mpspec.h1
-rw-r--r--src/arch/i386/smp/mpspec.c4
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);