+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
-\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-\r
-Module Name:\r
-\r
- Madt.h\r
-\r
-Abstract:\r
-\r
- This file describes the contents of the ACPI Multiple APIC Description\r
- Table (MADT). Some additional ACPI values are defined in Acpi1_0.h and\r
- Acpi2_0.h.\r
- To make changes to the MADT, it is necessary to update the count for the\r
- APIC structure being updated, and to modify table found in Madt.c.\r
-\r
---*/\r
-\r
-#ifndef _MADT_H\r
-#define _MADT_H\r
-\r
-//\r
-// Statements that include other files\r
-//\r
-#include "AcpiTablePlatform.h"\r
-#include <IndustryStandard/Acpi10.h>\r
-#include <IndustryStandard/Acpi20.h>\r
-#include <IndustryStandard/Acpi30.h>\r
-#include "Platform.h"\r
-\r
-//\r
-// MADT Definitions\r
-//\r
-#define EFI_ACPI_OEM_MADT_REVISION 0x00000000\r
-//\r
-// Multiple APIC Flags are defined in AcpiX.0.h\r
-//\r
-#define EFI_ACPI_1_0_MULTIPLE_APIC_FLAGS (EFI_ACPI_1_0_PCAT_COMPAT)\r
-#define EFI_ACPI_2_0_MULTIPLE_APIC_FLAGS (EFI_ACPI_2_0_PCAT_COMPAT)\r
-#define EFI_ACPI_3_0_MULTIPLE_APIC_FLAGS (EFI_ACPI_3_0_PCAT_COMPAT)\r
-#define EFI_ACPI_4_0_MULTIPLE_APIC_FLAGS (EFI_ACPI_4_0_PCAT_COMPAT)\r
-\r
-//\r
-// Define the number of each table type.\r
-// This is where the table layout is modified.\r
-//\r
-#define EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT MAX_CPU_NUM\r
-#define EFI_ACPI_LOCAL_APIC_NMI_COUNT MAX_CPU_NUM\r
-#define EFI_ACPI_IO_APIC_COUNT 1\r
-#define EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT 2\r
-#define EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT 0\r
-#define EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT 0\r
-#define EFI_ACPI_IO_SAPIC_COUNT 0\r
-#define EFI_ACPI_PROCESSOR_LOCAL_SAPIC_COUNT 0\r
-#define EFI_ACPI_PLATFORM_INTERRUPT_SOURCES_COUNT 0\r
-\r
-//\r
-// MADT structure\r
-//\r
-//\r
-// Ensure proper structure formats\r
-//\r
-#pragma pack(1)\r
-//\r
-// ACPI 1.0 Table structure\r
-//\r
-typedef struct {\r
- EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;\r
-\r
-#if EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT > 0\r
- EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE LocalApic[EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_IO_APIC_COUNT > 0\r
- EFI_ACPI_1_0_IO_APIC_STRUCTURE IoApic[EFI_ACPI_IO_APIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT > 0\r
- EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE Iso[EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT > 0\r
- EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE NmiSource[EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_LOCAL_APIC_NMI_COUNT > 0\r
- EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE LocalApicNmi[EFI_ACPI_LOCAL_APIC_NMI_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT > 0\r
- EFI_ACPI_1_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE LocalApicOverride[EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT];\r
-#endif\r
-\r
-} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE;\r
-\r
-//\r
-// ACPI 2.0 Table structure\r
-//\r
-typedef struct {\r
- EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;\r
-\r
-#if EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT > 0\r
- EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE LocalApic[EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_IO_APIC_COUNT > 0\r
- EFI_ACPI_2_0_IO_APIC_STRUCTURE IoApic[EFI_ACPI_IO_APIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT > 0\r
- EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE Iso[EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT > 0\r
- EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE NmiSource[EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_LOCAL_APIC_NMI_COUNT > 0\r
- EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE LocalApicNmi[EFI_ACPI_LOCAL_APIC_NMI_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT > 0\r
- EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE LocalApicOverride[EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_IO_SAPIC_COUNT > 0\r
- EFI_ACPI_2_0_IO_SAPIC_STRUCTURE IoSapic[EFI_ACPI_IO_SAPIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_PROCESSOR_LOCAL_SAPIC_COUNT > 0\r
- EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE LocalSapic[EFI_ACPI_PROCESSOR_LOCAL_SAPIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_PLATFORM_INTERRUPT_SOURCES_COUNT > 0\r
- EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE PlatformInterruptSources[EFI_ACPI_PLATFORM_INTERRUPT_SOURCES_COUNT];\r
-#endif\r
-\r
-} EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE;\r
-\r
-//\r
-// ACPI 3.0 Table structure\r
-//\r
-typedef struct {\r
- EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;\r
-\r
-#if EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT > 0 // Type 0x00\r
- EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE LocalApic[EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_IO_APIC_COUNT > 0 // Type 0x01\r
- EFI_ACPI_3_0_IO_APIC_STRUCTURE IoApic[EFI_ACPI_IO_APIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT > 0 // Type 0x02\r
- EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE Iso[EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT > 0 // Type 0x03\r
- EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE NmiSource[EFI_ACPI_NON_MASKABLE_INTERRUPT_SOURCE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_LOCAL_APIC_NMI_COUNT > 0 // Type 0x04\r
- EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE LocalApicNmi[EFI_ACPI_LOCAL_APIC_NMI_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT > 0 // Type 0x05\r
- EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE LocalApicOverride[EFI_ACPI_LOCAL_APIC_ADDRESS_OVERRIDE_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_IO_SAPIC_COUNT > 0 // Type 0x06\r
- EFI_ACPI_3_0_IO_SAPIC_STRUCTURE IoSapic[EFI_ACPI_IO_SAPIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_PROCESSOR_LOCAL_SAPIC_COUNT > 0 // Type 0x07 : This table changes in madt 2.0\r
- EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE LocalSapic[EFI_ACPI_PROCESSOR_LOCAL_SAPIC_COUNT];\r
-#endif\r
-\r
-#if EFI_ACPI_PLATFORM_INTERRUPT_SOURCES_COUNT > 0 // Type 0x08\r
- EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE PlatformInterruptSources[EFI_ACPI_PLATFORM_INTERRUPT_SOURCES_COUNT];\r
-#endif\r
-\r
-} EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE;\r
-\r
-#pragma pack()\r
-\r
-#endif\r