diff options
author | Furquan Shaikh <furquan@google.com> | 2020-04-30 21:27:47 -0700 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2020-05-02 12:11:41 +0000 |
commit | b1859a6687553900337c9ace092517e921e95e3b (patch) | |
tree | 0f5c1a7eb78485b182ce0c3e6991a1d50b37e228 /src | |
parent | a268aac9e5b79dcd96ab3411413f4385bfecfe5e (diff) |
cpu: Add a helper function cpu_get_lapic_addr
This change adds a helper function cpu_get_lapic_addr() that returns
LOCAL_APIC_ADDR for x86. It also adds a weak default implementation
which returns 0 if platform does not support LAPIC. This is being
done in preparation to move all ACPI table support in coreboot out of
arch/x86.
BUG=b:155428745
Change-Id: I4d9c50ee46804164712aaa22be1b434f800871ec
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/40929
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/x86/acpi.c | 12 | ||||
-rw-r--r-- | src/arch/x86/cpu.c | 5 | ||||
-rw-r--r-- | src/include/cpu/cpu.h | 1 |
3 files changed, 16 insertions, 2 deletions
diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c index 5c15a5e6af..8e7b51d79d 100644 --- a/src/arch/x86/acpi.c +++ b/src/arch/x86/acpi.c @@ -22,7 +22,6 @@ #include <device/pci.h> #include <cbmem.h> #include <commonlib/helpers.h> -#include <cpu/x86/lapic_def.h> #include <cpu/cpu.h> #include <cbfs.h> #include <version.h> @@ -222,6 +221,15 @@ int acpi_create_madt_lx2apic_nmi(acpi_madt_lx2apic_nmi_t *lapic_nmi, u32 cpu, return lapic_nmi->length; } +__weak uintptr_t cpu_get_lapic_addr(void) +{ + /* + * If an architecture does not support LAPIC, this weak implementation returns LAPIC + * addr as 0. + */ + return 0; +} + void acpi_create_madt(acpi_madt_t *madt) { acpi_header_t *header = &(madt->header); @@ -242,7 +250,7 @@ void acpi_create_madt(acpi_madt_t *madt) header->length = sizeof(acpi_madt_t); header->revision = get_acpi_table_revision(MADT); - madt->lapic_addr = LOCAL_APIC_ADDR; + madt->lapic_addr = cpu_get_lapic_addr(); if (CONFIG(ACPI_HAVE_PCAT_8259)) madt->flags |= 1; diff --git a/src/arch/x86/cpu.c b/src/arch/x86/cpu.c index 1ee8fb32c3..b52376885f 100644 --- a/src/arch/x86/cpu.c +++ b/src/arch/x86/cpu.c @@ -354,3 +354,8 @@ int cpu_index(void) } return -1; } + +uintptr_t cpu_get_lapic_addr(void) +{ + return LOCAL_APIC_ADDR; +} diff --git a/src/include/cpu/cpu.h b/src/include/cpu/cpu.h index cdb681729e..db324b6da9 100644 --- a/src/include/cpu/cpu.h +++ b/src/include/cpu/cpu.h @@ -6,6 +6,7 @@ void cpu_initialize(unsigned int cpu_index); /* Returns default APIC id based on logical_cpu number or < 0 on failure. */ int cpu_get_apic_id(int logical_cpu); +uintptr_t cpu_get_lapic_addr(void); /* Function to keep track of cpu default apic_id */ void cpu_add_map_entry(unsigned int index); struct bus; |