]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/AcpiTables/Madt.aslc
OvmfPkg/Bhyve/AcpiPlatformDxe: fix file path typo in comment
[mirror_edk2.git] / OvmfPkg / AcpiTables / Madt.aslc
CommitLineData
49ba9447 1/** @file\r
2 MADT Table\r
3\r
54235984 4 This file contains a structure definition for the ACPI 1.0 Multiple APIC\r
5 Description Table (MADT).\r
6\r
7 Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
b26f0cf9 8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
49ba9447 9\r
54235984 10**/\r
49ba9447 11\r
12#include <IndustryStandard/Acpi.h>\r
498f7d8d 13#include <Platform.h>\r
49ba9447 14\r
15//\r
16// Local APIC address\r
17//\r
18#define EFI_ACPI_LOCAL_APIC_ADDRESS 0xFEE00000 // TBD\r
19\r
20//\r
21// Multiple APIC Flags are defined in AcpiX.0.h\r
22//\r
23#define EFI_ACPI_1_0_MULTIPLE_APIC_FLAGS (EFI_ACPI_1_0_PCAT_COMPAT)\r
24\r
25//\r
26// Define the number of each table type.\r
27// This is where the table layout is modified.\r
28//\r
29#define EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT 1\r
30#define EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT 2\r
31#define EFI_ACPI_IO_APIC_COUNT 1\r
32\r
33//\r
34// Ensure proper structure formats\r
35//\r
36#pragma pack (1)\r
37\r
38//\r
39// ACPI 1.0 MADT structure\r
40//\r
41typedef struct {\r
42 EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;\r
43\r
44#if EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT > 0\r
45 EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE LocalApic[EFI_ACPI_PROCESSOR_LOCAL_APIC_COUNT];\r
46#endif\r
47\r
48#if EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT > 0\r
49 EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE Iso[EFI_ACPI_INTERRUPT_SOURCE_OVERRIDE_COUNT];\r
50#endif\r
51\r
52#if EFI_ACPI_IO_APIC_COUNT > 0\r
53 EFI_ACPI_1_0_IO_APIC_STRUCTURE IoApic[EFI_ACPI_IO_APIC_COUNT];\r
54#endif\r
55\r
56} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE;\r
57\r
58#pragma pack ()\r
59\r
60//\r
61// Multiple APIC Description Table\r
62//\r
63EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {\r
ce68d3bc
SZ
64 {\r
65 {\r
66 EFI_ACPI_1_0_APIC_SIGNATURE,\r
67 sizeof (EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE),\r
68 EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION,\r
69 0x00, // Checksum will be updated at runtime\r
70 {EFI_ACPI_OEM_ID},\r
71 EFI_ACPI_OEM_TABLE_ID,\r
72 EFI_ACPI_OEM_REVISION,\r
73 EFI_ACPI_CREATOR_ID,\r
74 EFI_ACPI_CREATOR_REVISION\r
75 },\r
76\r
77 //\r
78 // MADT specific fields\r
79 //\r
80 EFI_ACPI_LOCAL_APIC_ADDRESS,\r
81 EFI_ACPI_1_0_MULTIPLE_APIC_FLAGS,\r
82 },\r
54235984 83\r
49ba9447 84 //\r
85 // Processor Local APIC Structure\r
86 //\r
ce68d3bc
SZ
87 {\r
88 {\r
89 EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC, // Type\r
90 sizeof (EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE), // Length\r
91 0x00, // Processor ID\r
92 0x00, // Local APIC ID\r
93 0x00000001 // Flags - Enabled by default\r
94 }\r
95 },\r
49ba9447 96\r
97 //\r
98 // Interrupt Source Override Structure\r
99 //\r
100\r
ce68d3bc
SZ
101 {\r
102 {\r
103 //\r
104 // IRQ0=>IRQ2 Interrupt Source Override Structure\r
105 //\r
106 EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE, // Type\r
107 sizeof (EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE),// Length\r
108 0x00, // Bus - ISA\r
109 0x00, // Source - IRQ0\r
110 0x00000002, // Global System Interrupt - IRQ2\r
111 0x0000 // Flags - Conforms to specifications of the bus\r
112 },\r
113\r
114 {\r
115 //\r
116 // ISO (SCI Active High) Interrupt Source Override Structure\r
117 //\r
118 EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE, // Type\r
119 sizeof (EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE),// Length\r
120 0x00, // Bus - ISA\r
121 0x09, // Source - IRQ0\r
122 0x00000009, // Global System Interrupt - IRQ2\r
123 0x000D // Flags - Level-tiggered, Active High\r
124 }\r
125 },\r
49ba9447 126\r
127 //\r
128 // IO APIC Structure\r
129 //\r
ce68d3bc
SZ
130 {\r
131 {\r
132 EFI_ACPI_1_0_IO_APIC, // Type\r
133 sizeof (EFI_ACPI_1_0_IO_APIC_STRUCTURE), // Length\r
134 0x02, // IO APIC ID\r
135 EFI_ACPI_RESERVED_BYTE, // Reserved\r
136 0xFEC00000, // IO APIC Address (physical)\r
137 0x00000000 // Global System Interrupt Base\r
138 }\r
139 },\r
49ba9447 140};\r
141\r
142\r
143VOID*\r
144ReferenceAcpiTable (\r
145 VOID\r
146 )\r
147{\r
148 //\r
54235984 149 // Reference the table being generated to prevent the optimizer from removing the\r
f221466e 150 // data structure from the executable\r
49ba9447 151 //\r
152 return (VOID*)&Madt;\r
153}\r