diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2009-04-22 08:18:37 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2009-04-22 08:18:37 +0000 |
commit | da65fbf2082ae46b609c21d23ba39af45574be13 (patch) | |
tree | fa65430fda7bd8ed4cb62d8b9bfb8fdced2eae00 /src/arch | |
parent | 7e9771cc1a02f4154cd655386219ea69578e01f0 (diff) | |
download | coreboot-staging-da65fbf2082ae46b609c21d23ba39af45574be13.zip coreboot-staging-da65fbf2082ae46b609c21d23ba39af45574be13.tar.gz |
Factor out acpi_create_madt_lapics. It can be used on all ACPI boards.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4168 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/i386/boot/acpi.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/arch/i386/boot/acpi.c b/src/arch/i386/boot/acpi.c index b6aa19f..589dc64 100644 --- a/src/arch/i386/boot/acpi.c +++ b/src/arch/i386/boot/acpi.c @@ -88,6 +88,25 @@ int acpi_create_madt_lapic(acpi_madt_lapic_t *lapic, u8 cpu, u8 apic) return(lapic->length); } +unsigned long acpi_create_madt_lapics(unsigned long current) +{ + device_t cpu; + int cpu_index = 0; + + for(cpu = all_devices; cpu; cpu = cpu->next) { + if ((cpu->path.type != DEVICE_PATH_APIC) || + (cpu->bus->dev->path.type != DEVICE_PATH_APIC_CLUSTER)) { + continue; + } + if (!cpu->enabled) { + continue; + } + current += acpi_create_madt_lapic((acpi_madt_lapic_t *)current, cpu_index, cpu->path.apic.apic_id); + cpu_index++; + } + return current; +} + int acpi_create_madt_ioapic(acpi_madt_ioapic_t *ioapic, u8 id, u32 addr,u32 gsi_base) { ioapic->type=1; |