coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
madt.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <arch/ioapic.h>
4 #include <acpi/acpi.h>
5 #include <arch/smp/mpspec.h>
6 #include <device/device.h>
7 #include <device/pci.h>
8 
9 unsigned long acpi_fill_madt(unsigned long current)
10 {
11  /* Local APICs */
12  current = acpi_create_madt_lapics(current);
13 
14  /* IOAPIC */
15  current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
16  1, IO_APIC_ADDR, 0);
17 
18  /* INT_SRC_OVR */
20  current, 0, 0, 2,
24  current, 0, 9, 9,
27 
28  /* LAPIC_NMI */
30  current, 0,
32  MP_IRQ_TRIGGER_EDGE, 0x01);
34  current, 1, MP_IRQ_POLARITY_HIGH |
35  MP_IRQ_TRIGGER_EDGE, 0x01);
37  current, 2, MP_IRQ_POLARITY_HIGH |
38  MP_IRQ_TRIGGER_EDGE, 0x01);
40  current, 3, MP_IRQ_POLARITY_HIGH |
41  MP_IRQ_TRIGGER_EDGE, 0x01);
42  return current;
43 }
unsigned long acpi_create_madt_lapics(unsigned long current)
Definition: acpi.c:144
int acpi_create_madt_irqoverride(acpi_madt_irqoverride_t *irqoverride, u8 bus, u8 source, u32 gsirq, u16 flags)
Definition: acpi.c:187
int acpi_create_madt_ioapic(acpi_madt_ioapic_t *ioapic, u8 id, u32 addr, u32 gsi_base)
Definition: acpi.c:174
int acpi_create_madt_lapic_nmi(acpi_madt_lapic_nmi_t *lapic_nmi, u8 cpu, u16 flags, u8 lint)
Definition: acpi.c:200
#define IO_APIC_ADDR
Definition: ioapic.h:6
unsigned long acpi_fill_madt(unsigned long current)
Definition: madt.c:7
#define MP_IRQ_TRIGGER_DEFAULT
Definition: mpspec.h:127
#define MP_IRQ_POLARITY_HIGH
Definition: mpspec.h:124
#define MP_IRQ_POLARITY_DEFAULT
Definition: mpspec.h:123
#define MP_IRQ_TRIGGER_EDGE
Definition: mpspec.h:128
#define MP_IRQ_TRIGGER_LEVEL
Definition: mpspec.h:129