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>
This commit is contained in:
parent
a268aac9e5
commit
b1859a6687
|
@ -22,7 +22,6 @@
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <commonlib/helpers.h>
|
#include <commonlib/helpers.h>
|
||||||
#include <cpu/x86/lapic_def.h>
|
|
||||||
#include <cpu/cpu.h>
|
#include <cpu/cpu.h>
|
||||||
#include <cbfs.h>
|
#include <cbfs.h>
|
||||||
#include <version.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;
|
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)
|
void acpi_create_madt(acpi_madt_t *madt)
|
||||||
{
|
{
|
||||||
acpi_header_t *header = &(madt->header);
|
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->length = sizeof(acpi_madt_t);
|
||||||
header->revision = get_acpi_table_revision(MADT);
|
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))
|
if (CONFIG(ACPI_HAVE_PCAT_8259))
|
||||||
madt->flags |= 1;
|
madt->flags |= 1;
|
||||||
|
|
||||||
|
|
|
@ -354,3 +354,8 @@ int cpu_index(void)
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uintptr_t cpu_get_lapic_addr(void)
|
||||||
|
{
|
||||||
|
return LOCAL_APIC_ADDR;
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
void cpu_initialize(unsigned int cpu_index);
|
void cpu_initialize(unsigned int cpu_index);
|
||||||
/* Returns default APIC id based on logical_cpu number or < 0 on failure. */
|
/* Returns default APIC id based on logical_cpu number or < 0 on failure. */
|
||||||
int cpu_get_apic_id(int logical_cpu);
|
int cpu_get_apic_id(int logical_cpu);
|
||||||
|
uintptr_t cpu_get_lapic_addr(void);
|
||||||
/* Function to keep track of cpu default apic_id */
|
/* Function to keep track of cpu default apic_id */
|
||||||
void cpu_add_map_entry(unsigned int index);
|
void cpu_add_map_entry(unsigned int index);
|
||||||
struct bus;
|
struct bus;
|
||||||
|
|
Loading…
Reference in New Issue