summaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/tables.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/arch/x86/tables.c b/src/arch/x86/tables.c
index 4fba509a96..94fe691bcb 100644
--- a/src/arch/x86/tables.c
+++ b/src/arch/x86/tables.c
@@ -181,6 +181,25 @@ static unsigned long write_smbios_table(unsigned long rom_table_end)
return rom_table_end;
}
+void arch_write_tables(uintptr_t coreboot_table)
+{
+ unsigned long rom_table_end = 0xf0000;
+
+ /* This table must be between 0x0f0000 and 0x100000 */
+ if (IS_ENABLED(CONFIG_GENERATE_PIRQ_TABLE))
+ rom_table_end = write_pirq_table(rom_table_end);
+
+ /* The smp table must be in 0-1K, 639K-640K, or 960K-1M */
+ if (IS_ENABLED(CONFIG_GENERATE_MP_TABLE))
+ rom_table_end = write_mptable(rom_table_end);
+
+ if (IS_ENABLED(CONFIG_HAVE_ACPI_TABLES))
+ rom_table_end = write_acpi_table(rom_table_end);
+
+ if (IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES))
+ rom_table_end = write_smbios_table(rom_table_end);
+}
+
void bootmem_arch_add_ranges(void)
{
}
@@ -188,7 +207,6 @@ void bootmem_arch_add_ranges(void)
void write_tables(void)
{
unsigned long low_table_start, low_table_end;
- unsigned long rom_table_end;
/* Even if high tables are configured, some tables are copied both to
* the low and the high area, so payloads and OSes don't need to know
@@ -196,8 +214,6 @@ void write_tables(void)
*/
unsigned long high_table_pointer;
- rom_table_end = 0xf0000;
-
/* Start low addr at 0x500, so we don't run into conflicts with the BDA
* in case our data structures grow beyond 0x400. Only GDT
* and the coreboot table use low_tables.
@@ -205,20 +221,6 @@ void write_tables(void)
low_table_start = 0;
low_table_end = 0x500;
- /* This table must be between 0x0f0000 and 0x100000 */
- if (IS_ENABLED(CONFIG_GENERATE_PIRQ_TABLE))
- rom_table_end = write_pirq_table(rom_table_end);
-
- /* The smp table must be in 0-1K, 639K-640K, or 960K-1M */
- if (IS_ENABLED(CONFIG_GENERATE_MP_TABLE))
- rom_table_end = write_mptable(rom_table_end);
-
- if (IS_ENABLED(CONFIG_HAVE_ACPI_TABLES))
- rom_table_end = write_acpi_table(rom_table_end);
-
- if (IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES))
- rom_table_end = write_smbios_table(rom_table_end);
-
post_code(0x9e);
post_code(0x9d);