aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/acpi/acpi.c10
-rw-r--r--src/acpi/acpi_apic.c20
-rw-r--r--src/include/acpi/acpi.h3
3 files changed, 20 insertions, 13 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c
index 65be82eed0..1330f127bc 100644
--- a/src/acpi/acpi.c
+++ b/src/acpi/acpi.c
@@ -165,15 +165,7 @@ static void acpi_create_madt(acpi_header_t *header, void *unused)
if (acpi_fill_header(header, "APIC", MADT, sizeof(acpi_madt_t)) != CB_SUCCESS)
return;
- madt->lapic_addr = cpu_get_lapic_addr();
- if (CONFIG(ACPI_HAVE_PCAT_8259))
- madt->flags |= 1;
-
- if (CONFIG(ACPI_COMMON_MADT_LAPIC))
- current = acpi_create_madt_lapics_with_nmis(current);
-
- if (CONFIG(ACPI_COMMON_MADT_IOAPIC))
- current = acpi_create_madt_ioapic_gsi0_default(current);
+ current = acpi_arch_fill_madt(madt, current);
if (CONFIG(ACPI_CUSTOM_MADT))
current = acpi_fill_madt(current);
diff --git a/src/acpi/acpi_apic.c b/src/acpi/acpi_apic.c
index 38daaab514..f952d0a104 100644
--- a/src/acpi/acpi_apic.c
+++ b/src/acpi/acpi_apic.c
@@ -139,7 +139,7 @@ static int acpi_create_madt_sci_override(acpi_madt_irqoverride_t *irqoverride)
return irqoverride->length;
}
-unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current)
+static unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current)
{
current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
@@ -194,7 +194,7 @@ unsigned long acpi_create_madt_lapic_nmis(unsigned long current)
return current;
}
-unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current)
+static unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current)
{
current = acpi_create_madt_lapics(current);
current = acpi_create_madt_lapic_nmis(current);
@@ -227,3 +227,19 @@ int acpi_create_srat_x2apic(acpi_srat_x2apic_t *x2apic, u32 node, u32 apic)
return x2apic->length;
}
+
+unsigned long acpi_arch_fill_madt(acpi_madt_t *madt, unsigned long current)
+{
+ madt->lapic_addr = cpu_get_lapic_addr();
+
+ if (CONFIG(ACPI_HAVE_PCAT_8259))
+ madt->flags |= 1;
+
+ if (CONFIG(ACPI_COMMON_MADT_LAPIC))
+ current = acpi_create_madt_lapics_with_nmis(current);
+
+ if (CONFIG(ACPI_COMMON_MADT_IOAPIC))
+ current = acpi_create_madt_ioapic_gsi0_default(current);
+
+ return current;
+}
diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h
index 510c790210..151cdd0aab 100644
--- a/src/include/acpi/acpi.h
+++ b/src/include/acpi/acpi.h
@@ -1530,6 +1530,7 @@ unsigned long fw_cfg_acpi_tables(unsigned long start);
void preload_acpi_dsdt(void);
unsigned long write_acpi_tables(const unsigned long addr);
unsigned long acpi_fill_madt(unsigned long current);
+unsigned long acpi_arch_fill_madt(acpi_madt_t *madt, unsigned long current);
void acpi_fill_fadt(acpi_fadt_t *fadt);
void arch_fill_fadt(acpi_fadt_t *fadt);
@@ -1556,12 +1557,10 @@ int acpi_create_cedt_cfmws(acpi_cedt_cfmws_t *cfmws, u64 base_hpa, u64 window_si
u8 eniw, u32 hbig, u16 restriction, u16 qtg_id, const u32 *interleave_target);
-unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current);
int acpi_create_madt_ioapic_from_hw(acpi_madt_ioapic_t *ioapic, u32 addr);
unsigned long acpi_create_madt_one_lapic(unsigned long current, u32 cpu, u32 apic);
-unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current);
unsigned long acpi_create_madt_lapic_nmis(unsigned long current);
int acpi_create_srat_lapic(acpi_srat_lapic_t *lapic, u8 node, u8 apic);