/** @file This file contains a structure definition for the ACPI 2.0 Multiple APIC Description Table (MADT). Any changes to the MADT table require updating the respective structure count in Madt.h and then adding the structure to the MADT defined in this file. @copyright INTEL CONFIDENTIAL Copyright 1999 - 2021 Intel Corporation. The source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors. The Material may contain trade secrets and proprietary and confidential information of Intel Corporation and its suppliers and licensors, and is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way without Intel's prior express written permission. No license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel or otherwise. Any license under such intellectual property rights must be express and approved by Intel in writing. Unless otherwise agreed by Intel in writing, you may not remove or alter this notice or any other notice embedded in Materials by Intel or Intel's suppliers or licensors in any way. This file contains a 'Sample Driver' and is licensed as such under the terms of your license agreement with Intel or your vendor. This file may be modified by the user, subject to the additional terms of the license agreement. @par Specification Reference: **/ // // Statements that include other files // #include "Madt.h" // // Multiple APIC Description Table // EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = { { { EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, sizeof (EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE), EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, // // Checksum will be updated at runtime // 0x00, // // It is expected that these values will be programmed at runtime // { ' ', ' ', ' ', ' ', ' ', ' ' }, 0, EFI_ACPI_OEM_MADT_REVISION, 0, 0 }, // // MADT specific fields // FixedPcdGet64 (PcdApicLocalAddress), EFI_ACPI_6_3_MULTIPLE_APIC_FLAGS }, // // Sample Processor Local APIC Structure // //EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type //sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length //0x00 // Processor ID //0x00 // Local APIC ID //0x00000000, // Flags - Disabled (until initialized by platform driver) { { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x01, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x02, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x03, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x04, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x05, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x06, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x07, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x08, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x09, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x0A, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x0B, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x0C, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x0D, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x0E, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x0F, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x10, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x11, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x12, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x13, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x14, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x15, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x16, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x17, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x18, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x19, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x1A, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x1B, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x1C, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x1D, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x1E, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x1F, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) }, { EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC, // Type sizeof (EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length 0x20, // Processor ID 0xFF, // Local APIC ID 0x00000000 // Flags - Disabled (until initialized by platform driver) } }, // // Sample IO APIC Structure // //EFI_ACPI_6_3_IO_APIC, // Type //sizeof (EFI_ACPI_6_3_IO_APIC_STRUCTURE), // Length //0x00, // IO APIC ID //EFI_ACPI_RESERVED_BYTE, // Reserved //0x00000000, // IO APIC Address (physical) //0x00000000, // Global System Interrupt Base { { // // I/O SAPIC (ICH) // EFI_ACPI_6_3_IO_APIC, // Type sizeof (EFI_ACPI_6_3_IO_APIC_STRUCTURE), // Length FixedPcdGet8 (PcdApicIoIdPch), // IO APIC ID EFI_ACPI_RESERVED_BYTE, // Reserved FixedPcdGet64 (PcdApicIoAddress), // IO APIC Address (physical) 0x18 * 0 // Global System Interrupt Base } }, // // Sample Interrupt Source Override Structure // //EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE, // Type //sizeof (EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE), // Length //0x00, // Bus //0x00, // Source //0x00000000, // Global System Interrupt //0x0000, // Flags { { // // IRQ0=>IRQ2 Interrupt Source Override Structure // EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE, // Type sizeof (EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE),// Length 0x00, // Bus - ISA 0x00, // Source - IRQ0 0x00000002, // Global System Interrupt - IRQ2 0x0000 // Flags - Conforms to specifications of the bus }, { // // ISO (SCI Active High) Interrupt Source Override Structure // EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE, // Type sizeof (EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE),// Length 0x00, // Bus - ISA 0x09, // Source - IRQ9 0x00000009, // Global System Interrupt - IRQ9 0x000D // Flags - Level-tiggered, Active High } }, // // Sample Non-Maskable Interrupt Source Structure // //EFI_ACPI_6_3_NON_MASKABLE_INTERRUPT_SOURCE, // Type //sizeof (EFI_ACPI_6_3_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE), // Length //0x0000, // Flags //0x00000000, // Global System Interrupt // // Sample Local APIC NMI Structure // //EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type //sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length //0x00, // ACPI Processor ID //0x0000, // Flags //0x00, // Local APIC LINT# { { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x01, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x02, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x03, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x04, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x05, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x06, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x07, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x08, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x09, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x0A, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x0B, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x0C, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x0D, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x0E, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x0F, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x10, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x11, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x12, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x13, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x14, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x15, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x16, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x17, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# }, { EFI_ACPI_6_3_LOCAL_APIC_NMI, // Type sizeof (EFI_ACPI_6_3_LOCAL_APIC_NMI_STRUCTURE), // Length 0x00, // ACPI Processor ID 0x0005, // Flags - Edge-tiggered, Active High 0x01 // Local APIC LINT# } } // // Sample Local APIC Address Override Structure // //EFI_ACPI_6_3_LOCAL_APIC_ADDRESS_OVERRIDE, // Type //sizeof (EFI_ACPI_6_3_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE), // Length //EFI_ACPI_RESERVED_WORD, // Reserved //0x0000000000000000, // Local APIC Address // // Sample Platform Interrupt Sources Structure // //EFI_ACPI_6_3_PLATFORM_INTERRUPT_SOURCES, // Type //sizeof (EFI_ACPI_6_3_PLATFORM_INTERRUPT_SOURCES_STRUCTURE), // Length //0x0000, // Flags //0x00, // Interrupt Type //0x00, // Processor ID //0x00, // Processor EID //0x00, // IO SAPIC Vector //0x00000000, // Global System Interrupt //EFI_ACPI_RESERVED_DWORD, // Reserved }; #ifdef __GNUC__ VOID* ReferenceAcpiTable ( VOID ) { // // Reference the table being generated to prevent the optimizer from removing the // data structure from the executable // return (VOID*)&Madt; } #else VOID main ( VOID ) { } #endif