Correct some linux building issue and wrong file header
[people/mcb30/edk2.git] / edk2 / Tools / CCode / Source / Include / IndustryStandard / Acpi3_0.h
1 /*++\r
2 \r
3 Copyright (c) 2006 - 2007 Intel Corporation. All rights reserved. \r
4 This software and associated documentation (if any) is furnished\r
5 under a license and may only be used or copied in accordance\r
6 with the terms of the license. Except as permitted by such\r
7 license, no part of this software or documentation may be\r
8 reproduced, stored in a retrieval system, or transmitted in any\r
9 form or by any means without the express written consent of\r
10 Intel Corporation.\r
11 \r
12 \r
13 Module Name:\r
14 \r
15   Acpi3_0.h\r
16 \r
17 Abstract:\r
18 \r
19   ACPI 3.0 definitions from the ACPI Specification Revision 3.0 September 2, 2004\r
20 \r
21 --*/\r
22 \r
23 #ifndef _ACPI_3_0_H_\r
24 #define _ACPI_3_0_H_\r
25 \r
26 #include "IndustryStandard/Acpi.h"\r
27 \r
28 //\r
29 // Ensure proper structure formats\r
30 //\r
31 #pragma pack(1)\r
32 //\r
33 // ACPI Specification Revision\r
34 //\r
35 #define EFI_ACPI_3_0_REVISION 0x03  // BUGBUG: Not in spec yet.\r
36 //\r
37 // BUGBUG: OEM values need to be moved somewhere else, probably read from data hub\r
38 // and produced by a platform specific driver.\r
39 //\r
40 //\r
41 // ACPI 3.0 Generic Address Space definition\r
42 //\r
43 typedef struct {\r
44   UINT8   AddressSpaceId;\r
45   UINT8   RegisterBitWidth;\r
46   UINT8   RegisterBitOffset;\r
47   UINT8   AccessSize;\r
48   UINT64  Address;\r
49 } EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE;\r
50 \r
51 //\r
52 // Generic Address Space Address IDs\r
53 //\r
54 #define EFI_ACPI_3_0_SYSTEM_MEMORY              0\r
55 #define EFI_ACPI_3_0_SYSTEM_IO                  1\r
56 #define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE    2\r
57 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER        3\r
58 #define EFI_ACPI_3_0_SMBUS                      4\r
59 #define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE  0x7F\r
60 \r
61 //\r
62 // Generic Address Space Access Sizes\r
63 //\r
64 #define EFI_ACPI_3_0_UNDEFINED  0\r
65 #define EFI_ACPI_3_0_BYTE       1\r
66 #define EFI_ACPI_3_0_WORD       2\r
67 #define EFI_ACPI_3_0_DWORD      3\r
68 #define EFI_ACPI_3_0_QWORD      4\r
69 \r
70 //\r
71 // ACPI 3.0 table structures\r
72 //\r
73 //\r
74 // Root System Description Pointer Structure\r
75 //\r
76 typedef struct {\r
77   UINT64  Signature;\r
78   UINT8   Checksum;\r
79   UINT8   OemId[6];\r
80   UINT8   Revision;\r
81   UINT32  RsdtAddress;\r
82   UINT32  Length;\r
83   UINT64  XsdtAddress;\r
84   UINT8   ExtendedChecksum;\r
85   UINT8   Reserved[3];\r
86 } EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER;\r
87 \r
88 //\r
89 // RSD_PTR Revision (as defined in ACPI 3.0 spec.)\r
90 //\r
91 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  // ACPISpec30 (Revision 3.0 September 2, 2004) says current value is 2\r
92 //\r
93 // Common table header, this prefaces all ACPI tables, including FACS, but\r
94 // excluding the RSD PTR structure\r
95 //\r
96 typedef struct {\r
97   UINT32  Signature;\r
98   UINT32  Length;\r
99 } EFI_ACPI_3_0_COMMON_HEADER;\r
100 \r
101 //\r
102 // Root System Description Table\r
103 // No definition needed as it is a common description table header followed by a\r
104 // variable number of UINT32 table pointers.\r
105 //\r
106 //\r
107 // RSDT Revision (as defined in ACPI 3.0 spec.)\r
108 //\r
109 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
110 \r
111 //\r
112 // Extended System Description Table\r
113 // No definition needed as it is a common description table header followed by a\r
114 // variable number of UINT64 table pointers.\r
115 //\r
116 //\r
117 // XSDT Revision (as defined in ACPI 3.0 spec.)\r
118 //\r
119 #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
120 \r
121 //\r
122 // Fixed ACPI Description Table Structure (FADT)\r
123 //\r
124 typedef struct {\r
125   EFI_ACPI_DESCRIPTION_HEADER             Header;\r
126   UINT32                                  FirmwareCtrl;\r
127   UINT32                                  Dsdt;\r
128   UINT8                                   Reserved0;\r
129   UINT8                                   PreferredPmProfile;\r
130   UINT16                                  SciInt;\r
131   UINT32                                  SmiCmd;\r
132   UINT8                                   AcpiEnable;\r
133   UINT8                                   AcpiDisable;\r
134   UINT8                                   S4BiosReq;\r
135   UINT8                                   PstateCnt;\r
136   UINT32                                  Pm1aEvtBlk;\r
137   UINT32                                  Pm1bEvtBlk;\r
138   UINT32                                  Pm1aCntBlk;\r
139   UINT32                                  Pm1bCntBlk;\r
140   UINT32                                  Pm2CntBlk;\r
141   UINT32                                  PmTmrBlk;\r
142   UINT32                                  Gpe0Blk;\r
143   UINT32                                  Gpe1Blk;\r
144   UINT8                                   Pm1EvtLen;\r
145   UINT8                                   Pm1CntLen;\r
146   UINT8                                   Pm2CntLen;\r
147   UINT8                                   PmTmrLen;\r
148   UINT8                                   Gpe0BlkLen;\r
149   UINT8                                   Gpe1BlkLen;\r
150   UINT8                                   Gpe1Base;\r
151   UINT8                                   CstCnt;\r
152   UINT16                                  PLvl2Lat;\r
153   UINT16                                  PLvl3Lat;\r
154   UINT16                                  FlushSize;\r
155   UINT16                                  FlushStride;\r
156   UINT8                                   DutyOffset;\r
157   UINT8                                   DutyWidth;\r
158   UINT8                                   DayAlrm;\r
159   UINT8                                   MonAlrm;\r
160   UINT8                                   Century;\r
161   UINT16                                  IaPcBootArch;\r
162   UINT8                                   Reserved1;\r
163   UINT32                                  Flags;\r
164   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;\r
165   UINT8                                   ResetValue;\r
166   UINT8                                   Reserved2[3];\r
167   UINT64                                  XFirmwareCtrl;\r
168   UINT64                                  XDsdt;\r
169   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;\r
170   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;\r
171   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;\r
172   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;\r
173   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;\r
174   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;\r
175   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;\r
176   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;\r
177 } EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
178 \r
179 //\r
180 // FADT Version (as defined in ACPI 3.0 spec.)\r
181 //\r
182 #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x04\r
183 \r
184 //\r
185 // Fixed ACPI Description Table Preferred Power Management Profile\r
186 //\r
187 #define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED         0\r
188 #define EFI_ACPI_3_0_PM_PROFILE_DESKTOP             1\r
189 #define EFI_ACPI_3_0_PM_PROFILE_MOBILE              2\r
190 #define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION         3\r
191 #define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER   4\r
192 #define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER         5\r
193 #define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC        6\r
194 #define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER  7\r
195 \r
196 //\r
197 // Fixed ACPI Description Table Boot Architecture Flags\r
198 // All other bits are reserved and must be set to 0.\r
199 //\r
200 #define EFI_ACPI_3_0_LEGACY_DEVICES    (1 << 0)\r
201 #define EFI_ACPI_3_0_8042              (1 << 1)\r
202 #define EFI_ACPI_3_0_VGA_NOT_PRESENT   (1 << 2)\r
203 #define EFI_ACPI_3_0_MSI_NOT_SUPPORTED (1 << 3)\r
204 //\r
205 // Fixed ACPI Description Table Fixed Feature Flags\r
206 // All other bits are reserved and must be set to 0.\r
207 //\r
208 #define EFI_ACPI_3_0_WBINVD                   (1 << 0)\r
209 #define EFI_ACPI_3_0_WBINVD_FLUSH             (1 << 1)\r
210 #define EFI_ACPI_3_0_PROC_C1                  (1 << 2)\r
211 #define EFI_ACPI_3_0_P_LVL2_UP                (1 << 3)\r
212 #define EFI_ACPI_3_0_PWR_BUTTON               (1 << 4)\r
213 #define EFI_ACPI_3_0_SLP_BUTTON               (1 << 5)\r
214 #define EFI_ACPI_3_0_FIX_RTC                  (1 << 6)\r
215 #define EFI_ACPI_3_0_RTC_S4                   (1 << 7)\r
216 #define EFI_ACPI_3_0_TMR_VAL_EXT              (1 << 8)\r
217 #define EFI_ACPI_3_0_DCK_CAP                  (1 << 9)\r
218 #define EFI_ACPI_3_0_RESET_REG_SUP            (1 << 10)\r
219 #define EFI_ACPI_3_0_SEALED_CASE              (1 << 11)\r
220 #define EFI_ACPI_3_0_HEADLESS                 (1 << 12)\r
221 #define EFI_ACPI_3_0_CPU_SW_SLP               (1 << 13)\r
222 #define EFI_ACPI_3_0_PCI_EXP_WAK              (1 << 14)\r
223 #define EFI_ACPI_3_0_USE_PLATFORM_CLOCK       (1 << 15)\r
224 #define EFI_ACPI_3_0_S4_RTC_STS_VALID         (1 << 16)\r
225 #define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE  (1 << 17)\r
226 #define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL (1 << 18)\r
227 #define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE (1 << 19)\r
228 \r
229 //\r
230 // Firmware ACPI Control Structure\r
231 //\r
232 typedef struct {\r
233   UINT32  Signature;\r
234   UINT32  Length;\r
235   UINT32  HardwareSignature;\r
236   UINT32  FirmwareWakingVector;\r
237   UINT32  GlobalLock;\r
238   UINT32  Flags;\r
239   UINT64  XFirmwareWakingVector;\r
240   UINT8   Version;\r
241   UINT8   Reserved[31];\r
242 } EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
243 \r
244 //\r
245 // FACS Version (as defined in ACPI 3.0 spec.)\r
246 //\r
247 #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x01\r
248 \r
249 //\r
250 // Firmware Control Structure Feature Flags\r
251 // All other bits are reserved and must be set to 0.\r
252 //\r
253 #define EFI_ACPI_3_0_S4BIOS_F (1 << 0)\r
254 \r
255 //\r
256 // Differentiated System Description Table,\r
257 // Secondary System Description Table\r
258 // and Persistent System Description Table,\r
259 // no definition needed as they are common description table header followed by a\r
260 // definition block.\r
261 //\r
262 #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02\r
263 #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02\r
264 \r
265 //\r
266 // Multiple APIC Description Table header definition.  The rest of the table\r
267 // must be defined in a platform specific manner.\r
268 //\r
269 typedef struct {\r
270   EFI_ACPI_DESCRIPTION_HEADER Header;\r
271   UINT32                      LocalApicAddress;\r
272   UINT32                      Flags;\r
273 } EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
274 \r
275 //\r
276 // MADT Revision (as defined in ACPI 3.0 spec.)\r
277 //\r
278 #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02\r
279 \r
280 //\r
281 // Multiple APIC Flags\r
282 // All other bits are reserved and must be set to 0.\r
283 //\r
284 #define EFI_ACPI_3_0_PCAT_COMPAT  (1 << 0)\r
285 \r
286 //\r
287 // Multiple APIC Description Table APIC structure types\r
288 // All other values between 0x09 an 0xFF are reserved and\r
289 // will be ignored by OSPM.\r
290 //\r
291 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC           0x00\r
292 #define EFI_ACPI_3_0_IO_APIC                        0x01\r
293 #define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE      0x02\r
294 #define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03\r
295 #define EFI_ACPI_3_0_LOCAL_APIC_NMI                 0x04\r
296 #define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE    0x05\r
297 #define EFI_ACPI_3_0_IO_SAPIC                       0x06\r
298 #define EFI_ACPI_3_0_LOCAL_SAPIC                    0x07\r
299 #define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES     0x08\r
300 \r
301 //\r
302 // APIC Structure Definitions\r
303 //\r
304 //\r
305 // Processor Local APIC Structure Definition\r
306 //\r
307 typedef struct {\r
308   UINT8   Type;\r
309   UINT8   Length;\r
310   UINT8   AcpiProcessorId;\r
311   UINT8   ApicId;\r
312   UINT32  Flags;\r
313 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE;\r
314 \r
315 //\r
316 // Local APIC Flags.  All other bits are reserved and must be 0.\r
317 //\r
318 #define EFI_ACPI_3_0_LOCAL_APIC_ENABLED (1 << 0)\r
319 \r
320 //\r
321 // IO APIC Structure\r
322 //\r
323 typedef struct {\r
324   UINT8   Type;\r
325   UINT8   Length;\r
326   UINT8   IoApicId;\r
327   UINT8   Reserved;\r
328   UINT32  IoApicAddress;\r
329   UINT32  GlobalSystemInterruptBase;\r
330 } EFI_ACPI_3_0_IO_APIC_STRUCTURE;\r
331 \r
332 //\r
333 // Interrupt Source Override Structure\r
334 //\r
335 typedef struct {\r
336   UINT8   Type;\r
337   UINT8   Length;\r
338   UINT8   Bus;\r
339   UINT8   Source;\r
340   UINT32  GlobalSystemInterrupt;\r
341   UINT16  Flags;\r
342 } EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
343 \r
344 //\r
345 // Platform Interrupt Sources Structure Definition\r
346 //\r
347 typedef struct {\r
348   UINT8   Type;\r
349   UINT8   Length;\r
350   UINT16  Flags;\r
351   UINT8   InterruptType;\r
352   UINT8   ProcessorId;\r
353   UINT8   ProcessorEid;\r
354   UINT8   IoSapicVector;\r
355   UINT32  GlobalSystemInterrupt;\r
356   UINT32  PlatformInterruptSourceFlags;\r
357   UINT8   CpeiProcessorOverride;\r
358   UINT8   Reserved[31];\r
359 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;\r
360 \r
361 //\r
362 // MPS INTI flags.\r
363 // All other bits are reserved and must be set to 0.\r
364 //\r
365 #define EFI_ACPI_3_0_POLARITY      (3 << 0)\r
366 #define EFI_ACPI_3_0_TRIGGER_MODE  (3 << 2)\r
367 \r
368 //\r
369 // Non-Maskable Interrupt Source Structure\r
370 //\r
371 typedef struct {\r
372   UINT8   Type;\r
373   UINT8   Length;\r
374   UINT16  Flags;\r
375   UINT32  GlobalSystemInterrupt;\r
376 } EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
377 \r
378 //\r
379 // Local APIC NMI Structure\r
380 //\r
381 typedef struct {\r
382   UINT8   Type;\r
383   UINT8   Length;\r
384   UINT8   AcpiProcessorId;\r
385   UINT16  Flags;\r
386   UINT8   LocalApicLint;\r
387 } EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE;\r
388 \r
389 //\r
390 // Local APIC Address Override Structure\r
391 //\r
392 typedef struct {\r
393   UINT8   Type;\r
394   UINT8   Length;\r
395   UINT16  Reserved;\r
396   UINT64  LocalApicAddress;\r
397 } EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;\r
398 \r
399 //\r
400 // IO SAPIC Structure\r
401 //\r
402 typedef struct {\r
403   UINT8   Type;\r
404   UINT8   Length;\r
405   UINT8   IoApicId;\r
406   UINT8   Reserved;\r
407   UINT32  GlobalSystemInterruptBase;\r
408   UINT64  IoSapicAddress;\r
409 } EFI_ACPI_3_0_IO_SAPIC_STRUCTURE;\r
410 \r
411 //\r
412 // Local SAPIC Structure\r
413 // This struct followed by a null-terminated ASCII string - ACPI Processor UID String\r
414 //\r
415 typedef struct {\r
416   UINT8   Type;\r
417   UINT8   Length;\r
418   UINT8   AcpiProcessorId;\r
419   UINT8   LocalSapicId;\r
420   UINT8   LocalSapicEid;\r
421   UINT8   Reserved[3];\r
422   UINT32  Flags;\r
423   UINT32  ACPIProcessorUIDValue;\r
424 } EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;\r
425 \r
426 //\r
427 // Platform Interrupt Sources Structure\r
428 //\r
429 typedef struct {\r
430   UINT8   Type;\r
431   UINT8   Length;\r
432   UINT16  Flags;\r
433   UINT8   InterruptType;\r
434   UINT8   ProcessorId;\r
435   UINT8   ProcessorEid;\r
436   UINT8   IoSapicVector;\r
437   UINT32  GlobalSystemInterrupt;\r
438   UINT32  PlatformInterruptSourceFlags;\r
439 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;\r
440 \r
441 //\r
442 // Platform Interrupt Source Flags.\r
443 // All other bits are reserved and must be set to 0.\r
444 //\r
445 #define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE     (1 << 0)\r
446 \r
447 //\r
448 // Smart Battery Description Table (SBST)\r
449 //\r
450 typedef struct {\r
451   EFI_ACPI_DESCRIPTION_HEADER Header;\r
452   UINT32                      WarningEnergyLevel;\r
453   UINT32                      LowEnergyLevel;\r
454   UINT32                      CriticalEnergyLevel;\r
455 } EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE;\r
456 \r
457 //\r
458 // SBST Version (as defined in ACPI 3.0 spec.)\r
459 //\r
460 #define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01\r
461 \r
462 //\r
463 // Embedded Controller Boot Resources Table (ECDT)\r
464 // The table is followed by a null terminated ASCII string that contains\r
465 // a fully qualified reference to the name space object.\r
466 //\r
467 typedef struct {\r
468   EFI_ACPI_DESCRIPTION_HEADER             Header;\r
469   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcControl;\r
470   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcData;\r
471   UINT32                                  Uid;\r
472   UINT8                                   GpeBit;\r
473 } EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;\r
474 \r
475 //\r
476 // ECDT Version (as defined in ACPI 3.0 spec.)\r
477 //\r
478 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01\r
479 \r
480 //\r
481 // System Resource Affinity Table (SRAT.  The rest of the table\r
482 // must be defined in a platform specific manner.\r
483 //\r
484 typedef struct {\r
485   EFI_ACPI_DESCRIPTION_HEADER Header;\r
486   UINT32                      Reserved1;  // Must be set to 1\r
487   UINT64                      Reserved2;\r
488 } EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;\r
489 \r
490 //\r
491 // SRAT Version (as defined in ACPI 3.0 spec.)\r
492 //\r
493 #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x02\r
494 \r
495 //\r
496 // SRAT structure types.\r
497 // All other values between 0x02 an 0xFF are reserved and\r
498 // will be ignored by OSPM.\r
499 //\r
500 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00\r
501 #define EFI_ACPI_3_0_MEMORY_AFFINITY                      0x01\r
502 \r
503 //\r
504 // Processor Local APIC/SAPIC Affinity Structure Definition\r
505 //\r
506 typedef struct {\r
507   UINT8   Type;\r
508   UINT8   Length;\r
509   UINT8   ProximityDomain7To0;\r
510   UINT8   ApicId;\r
511   UINT32  Flags;\r
512   UINT8   LocalSapicEid;\r
513   UINT8   ProximityDomain31To8[3];\r
514   UINT8   Reserved[4];\r
515 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;\r
516 \r
517 //\r
518 // Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.\r
519 //\r
520 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)\r
521 \r
522 //\r
523 // Memory Affinity Structure Definition\r
524 //\r
525 typedef struct {\r
526   UINT8   Type;\r
527   UINT8   Length;\r
528   UINT32  ProximityDomain;\r
529   UINT16  Reserved1;\r
530   UINT32  AddressBaseLow;\r
531   UINT32  AddressBaseHigh;\r
532   UINT32  LengthLow;\r
533   UINT32  LengthHigh;\r
534   UINT32  Reserved2;\r
535   UINT32  Flags;\r
536   UINT64  Reserved3;\r
537 } EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE;\r
538 \r
539 //\r
540 // Memory Flags.  All other bits are reserved and must be 0.\r
541 //\r
542 #define EFI_ACPI_3_0_MEMORY_ENABLED       (1 << 0)\r
543 #define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)\r
544 #define EFI_ACPI_3_0_MEMORY_NONVOLATILE   (1 << 2)\r
545 \r
546 //\r
547 // System Locality Distance Information Table (SLIT).\r
548 // The rest of the table is a matrix.\r
549 //\r
550 typedef struct {\r
551   EFI_ACPI_DESCRIPTION_HEADER Header;\r
552   UINT64                      NumberOfSystemLocalities;\r
553 } EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;\r
554 \r
555 //\r
556 // SLIT Version (as defined in ACPI 3.0 spec.)\r
557 //\r
558 #define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01\r
559 \r
560 //\r
561 // Known table signatures\r
562 //\r
563 //\r
564 // "RSD PTR " Root System Description Pointer\r
565 //\r
566 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  0x2052545020445352ULL\r
567 \r
568 //\r
569 // "APIC" Multiple APIC Description Table\r
570 //\r
571 #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  0x43495041\r
572 \r
573 //\r
574 // "DSDT" Differentiated System Description Table\r
575 //\r
576 #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  0x54445344\r
577 \r
578 //\r
579 // "ECDT" Embedded Controller Boot Resources Table\r
580 //\r
581 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE 0x54444345\r
582 \r
583 //\r
584 // "FACP" Fixed ACPI Description Table\r
585 //\r
586 #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE 0x50434146\r
587 \r
588 //\r
589 // "FACS" Firmware ACPI Control Structure\r
590 //\r
591 #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  0x53434146\r
592 \r
593 //\r
594 // "PSDT" Persistent System Description Table\r
595 //\r
596 #define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  0x54445350\r
597 \r
598 //\r
599 // "RSDT" Root System Description Table\r
600 //\r
601 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  0x54445352\r
602 \r
603 //\r
604 // "SBST" Smart Battery Specification Table\r
605 //\r
606 #define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  0x54534253\r
607 \r
608 //\r
609 // "SLIT" System Locality Information Table\r
610 //\r
611 #define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  0x54494C53\r
612 \r
613 //\r
614 // "SRAT" System Resource Affinity Table\r
615 //\r
616 #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE 0x54415253\r
617 \r
618 //\r
619 // "SSDT" Secondary System Description Table\r
620 //\r
621 #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445353\r
622 \r
623 //\r
624 // "XSDT" Extended System Description Table\r
625 //\r
626 #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  0x54445358\r
627 \r
628 //\r
629 // "BOOT" MS Simple Boot Spec\r
630 //\r
631 #define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE 0x544F4F42\r
632 \r
633 //\r
634 // "CPEP" Corrected Platform Error Polling Table\r
635 // See\r
636 //\r
637 #define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE 0x50455043\r
638 \r
639 //\r
640 // "DBGP" MS Debug Port Spec\r
641 //\r
642 #define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE 0x50474244\r
643 \r
644 //\r
645 // "ETDT" Event Timer Description Table\r
646 //\r
647 #define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  0x54445445\r
648 \r
649 //\r
650 // "HPET" IA-PC High Precision Event Timer Table\r
651 //\r
652 #define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE 0x54455048\r
653 \r
654 //\r
655 // "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table\r
656 //\r
657 #define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  0x4746434D\r
658 \r
659 //\r
660 // "SPCR" Serial Port Concole Redirection Table\r
661 //\r
662 #define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  0x52435053\r
663 \r
664 //\r
665 // "SPMI" Server Platform Management Interface Table\r
666 //\r
667 #define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE 0x494D5053\r
668 \r
669 //\r
670 // "TCPA" Trusted Computing Platform Alliance Capabilities Table\r
671 //\r
672 #define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE 0x41504354\r
673 \r
674 //\r
675 // "WDRT" Watchdog Resource Table\r
676 //\r
677 #define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE 0x54524457\r
678 \r
679 #pragma pack()\r
680 \r
681 #endif\r