Author: tqh Date: 2010-10-23 17:49:17 +0200 (Sat, 23 Oct 2010) New Revision: 39073 Changeset: http://dev.haiku-os.org/changeset/39073 Modified: haiku/trunk/headers/private/kernel/arch/x86/arch_acpi.h Log: Completed structures for MADT APIC structures. I may now have a Frankenheimer. Modified: haiku/trunk/headers/private/kernel/arch/x86/arch_acpi.h =================================================================== --- haiku/trunk/headers/private/kernel/arch/x86/arch_acpi.h 2010-10-23 15:36:36 UTC (rev 39072) +++ haiku/trunk/headers/private/kernel/arch/x86/arch_acpi.h 2010-10-23 15:49:17 UTC (rev 39073) @@ -51,7 +51,7 @@ ACPI_MADT_LOCAL_APIC_ADDRESS_OVERRIDE = 5, ACPI_MADT_IO_SAPIC = 6, ACPI_MADT_LOCAL_SAPIC = 7, - ACPI_MADT_PLATFORM_INTERRUPT_SOURCES = 8, + ACPI_MADT_PLATFORM_INTERRUPT_SOURCE = 8, ACPI_MADT_PROCESSOR_LOCAL_X2_APIC_NMI = 9, ACPI_MADT_LOCAL_X2_APIC_NMI = 0XA }; @@ -102,7 +102,7 @@ uint8 type; /* 4 = local APIC NMI */ uint8 length; /* 6 bytes */ uint8 acpi_processor_id; /* Processor ID corresponding to processor - ID in acpi_local_apic. 0xFF signals + ID in acpi_local_apic. 0xFF means it applies to all processors */ uint16 flags; /* Same as MPS INTI flags. See Table 5-25 in ACPI Spec 4.0a or similar */ @@ -133,7 +133,7 @@ typedef struct acpi_local_sapic { uint8 type; /* 7 = processor local SAPIC */ - uint8 length; /* x bytes */ + uint8 length; /* n bytes */ uint8 acpi_processor_id; uint8 local_sapic_id; uint8 local_sapic_eid; @@ -148,6 +148,48 @@ string. Null-terminated */ } _PACKED acpi_local_sapic; +typedef struct acpi_platform_interrupt_source { + uint8 type; /* 8 = platform interrupt source */ + uint8 length; /* 16 bytes */ + uint16 flags; /* Same as MPS INTI flags. See Table 5-25 in + ACPI Spec 4.0a or similar */ + uint8 interrupt_type; /* 1 PMI, 2 INIT, 3 Corrected Platform + Error Interrupt */ + uint8 processor_id; /* processor ID of destination */ + uint8 processor_eid; /* processor EID of destination */ + uint8 io_sapic_vector; /* value that must be used to program the + vector field of the I/O SAPIC redirection + entry for entries with PMI type. */ + uint32 interrupt; /* global system interrupt this + platform interrupt will trigger */ + uint32 platform_int_flags; /* Platform Interrupt Source Flags. See + Table 5-32 of ACPI Spec 4.0a for desc */ +} _PACKED acpi_platform_interrupt_source; +typedef struct acpi_local_x2_apic { + uint8 type; /* 9 = processor local x2APIC */ + uint8 length; /* 16 bytes */ + uint16 reserved; /* reserved (must be zero) */ + uint32 x2apic_id; /* processor's local x2APIC ID */ + uint32 flags; /* 1 = enabled. */ + uint32 processor_uid_nr; /* Matches _UID of a processor when it is a + number */ +} _PACKED acpi_local_x2_apic; +typedef struct acpi_local_x2_apic_nmi { + uint8 type; /* 0xA = local x2APIC NMI */ + uint8 length; /* 12 bytes */ + uint16 flags; /* Same as MPS INTI flags. See Table 5-25 in + ACPI Spec 4.0a or similar */ + uint32 acpi_processor_uid; /* UID corresponding to ID in processor + device object. 0xFFFFFFFF means + it applies to all processors */ + uint8 local_interrupt; /* Local x2APIC interrupt input LINTn to + which NMI is connected */ + uint8 reserved1; /* reserved (must be set to zero) */ + uint8 reserved2; /* reserved (must be set to zero) */ + uint8 reserved3; /* reserved (must be set to zero) */ +} _PACKED acpi_local_x2_apic_nmi; + + #endif /* _KERNEL_ARCH_x86_ARCH_ACPI_H */