+++ /dev/null
-/** @file\r
- MADT Table\r
-\r
- This file contains a structure definition for the ACPI 1.0 Multiple APIC\r
- Description Table (MADT).\r
-\r
- Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <IndustryStandard/Acpi.h>\r
-#include <Platform.h>\r
-\r
-//\r
-// Local APIC address\r
-//\r
-#define EFI_ACPI_LOCAL_APIC_ADDRESS 0xFEE00000 // TBD\r
-\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
-\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 1\r
-#define EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT 2\r
-#define EFI_ACPI_IO_APIC_COUNT 1\r
-\r
-//\r
-// Ensure proper structure formats\r
-//\r
-#pragma pack (1)\r
-\r
-//\r
-// ACPI 1.0 MADT 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_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_IO_APIC_COUNT > 0\r
- EFI_ACPI_1_0_IO_APIC_STRUCTURE IoApic[EFI_ACPI_IO_APIC_COUNT];\r
-#endif\r
-\r
-} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE;\r
-\r
-#pragma pack ()\r
-\r
-//\r
-// Multiple APIC Description Table\r
-//\r
-EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {\r
- {\r
- {\r
- EFI_ACPI_1_0_APIC_SIGNATURE,\r
- sizeof (EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE),\r
- EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION,\r
- 0x00, // Checksum will be updated at runtime\r
- {EFI_ACPI_OEM_ID},\r
- EFI_ACPI_OEM_TABLE_ID,\r
- EFI_ACPI_OEM_REVISION,\r
- EFI_ACPI_CREATOR_ID,\r
- EFI_ACPI_CREATOR_REVISION\r
- },\r
-\r
- //\r
- // MADT specific fields\r
- //\r
- EFI_ACPI_LOCAL_APIC_ADDRESS,\r
- EFI_ACPI_1_0_MULTIPLE_APIC_FLAGS,\r
- },\r
-\r
- //\r
- // Processor Local APIC Structure\r
- //\r
- {\r
- {\r
- EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC, // Type\r
- sizeof (EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length\r
- 0x00, // Processor ID\r
- 0x00, // Local APIC ID\r
- 0x00000001 // Flags - Enabled by default\r
- }\r
- },\r
-\r
- //\r
- // Interrupt Source Override Structure\r
- //\r
-\r
- {\r
- {\r
- //\r
- // IRQ0=>IRQ2 Interrupt Source Override Structure\r
- //\r
- EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE, // Type\r
- sizeof (EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE),// Length\r
- 0x00, // Bus - ISA\r
- 0x00, // Source - IRQ0\r
- 0x00000002, // Global System Interrupt - IRQ2\r
- 0x0000 // Flags - Conforms to specifications of the bus\r
- },\r
-\r
- {\r
- //\r
- // ISO (SCI Active High) Interrupt Source Override Structure\r
- //\r
- EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE, // Type\r
- sizeof (EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE),// Length\r
- 0x00, // Bus - ISA\r
- 0x09, // Source - IRQ0\r
- 0x00000009, // Global System Interrupt - IRQ2\r
- 0x000D // Flags - Level-tiggered, Active High\r
- }\r
- },\r
-\r
- //\r
- // IO APIC Structure\r
- //\r
- {\r
- {\r
- EFI_ACPI_1_0_IO_APIC, // Type\r
- sizeof (EFI_ACPI_1_0_IO_APIC_STRUCTURE), // Length\r
- 0x02, // IO APIC ID\r
- EFI_ACPI_RESERVED_BYTE, // Reserved\r
- 0xFEC00000, // IO APIC Address (physical)\r
- 0x00000000 // Global System Interrupt Base\r
- }\r
- },\r
-};\r
-\r
-\r
-VOID*\r
-ReferenceAcpiTable (\r
- VOID\r
- )\r
-{\r
- //\r
- // Reference the table being generated to prevent the optimizer from removing the\r
- // data structure from the executable\r
- //\r
- return (VOID*)&Madt;\r
-}\r