]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/Acpi10.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi10.h
index b463d6ff280b1280563f3c8937fed7aa7b171555..9cc02edb3eb095cdad7dff6d730ebf7735001e0e 100644 (file)
-/** @file   \r
+/** @file\r
   ACPI 1.0b definitions from the ACPI Specification, revision 1.0b\r
 \r
-  Copyright (c) 2006 - 2008, Intel Corporation\r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2020, Arm Limited. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 **/\r
 \r
 #ifndef _ACPI_1_0_H_\r
 #define _ACPI_1_0_H_\r
 \r
+#include <IndustryStandard/AcpiAml.h>\r
+\r
 ///\r
 /// Common table header, this prefaces all ACPI tables, including FACS, but\r
-/// excluding the RSD PTR structure\r
+/// excluding the RSD PTR structure.\r
 ///\r
 typedef struct {\r
-  UINT32  Signature;\r
-  UINT32  Length;\r
+  UINT32    Signature;\r
+  UINT32    Length;\r
 } EFI_ACPI_COMMON_HEADER;\r
 \r
 #pragma pack(1)\r
 ///\r
-/// Common ACPI description table header.  This structure prefaces most ACPI tables.\r
+/// The common ACPI description table header.  This structure prefaces most ACPI tables.\r
 ///\r
 typedef struct {\r
-  UINT32  Signature;\r
-  UINT32  Length;\r
-  UINT8   Revision;\r
-  UINT8   Checksum;\r
-  UINT8   OemId[6];\r
-  UINT64  OemTableId;\r
-  UINT32  OemRevision;\r
-  UINT32  CreatorId;\r
-  UINT32  CreatorRevision;\r
+  UINT32    Signature;\r
+  UINT32    Length;\r
+  UINT8     Revision;\r
+  UINT8     Checksum;\r
+  UINT8     OemId[6];\r
+  UINT64    OemTableId;\r
+  UINT32    OemRevision;\r
+  UINT32    CreatorId;\r
+  UINT32    CreatorRevision;\r
 } EFI_ACPI_DESCRIPTION_HEADER;\r
 #pragma pack()\r
 \r
 //\r
-// Define for Desriptor\r
+// Define for Descriptor\r
+//\r
+#define ACPI_SMALL_ITEM_FLAG  0x00\r
+#define ACPI_LARGE_ITEM_FLAG  0x01\r
+\r
+//\r
+// Small Item Descriptor Name\r
+//\r
+#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME              0x04\r
+#define ACPI_SMALL_DMA_DESCRIPTOR_NAME              0x05\r
+#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME  0x06\r
+#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME    0x07\r
+#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME          0x08\r
+#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME    0x09\r
+#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME   0x0E\r
+#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME          0x0F\r
+\r
+//\r
+// Large Item Descriptor Name\r
+//\r
+#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME        0x01\r
+#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME             0x04\r
+#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME        0x05\r
+#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME  0x06\r
+#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME        0x07\r
+#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME         0x08\r
+#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME               0x09\r
+#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME        0x0A\r
+\r
+//\r
+// Small Item Descriptor Value\r
 //\r
-#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
-#define ACPI_END_TAG_DESCRIPTOR       0x79\r
+#define ACPI_IRQ_NOFLAG_DESCRIPTOR              0x22\r
+#define ACPI_IRQ_DESCRIPTOR                     0x23\r
+#define ACPI_DMA_DESCRIPTOR                     0x2A\r
+#define ACPI_START_DEPENDENT_DESCRIPTOR         0x30\r
+#define ACPI_START_DEPENDENT_EX_DESCRIPTOR      0x31\r
+#define ACPI_END_DEPENDENT_DESCRIPTOR           0x38\r
+#define ACPI_IO_PORT_DESCRIPTOR                 0x47\r
+#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR  0x4B\r
+#define ACPI_END_TAG_DESCRIPTOR                 0x79\r
+\r
+//\r
+// Large Item Descriptor Value\r
+//\r
+#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR        0x81\r
+#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR        0x85\r
+#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR  0x86\r
+#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR        0x87\r
+#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR         0x88\r
+#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR         0x89\r
+#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR        0x8A\r
+#define ACPI_ADDRESS_SPACE_DESCRIPTOR              0x8A\r
 \r
 //\r
 // Resource Type\r
 //\r
-#define ACPI_ADDRESS_SPACE_TYPE_MEM   0x00\r
-#define ACPI_ADDRESS_SPACE_TYPE_IO    0x01\r
-#define ACPI_ADDRESS_SPACE_TYPE_BUS   0x02\r
+#define ACPI_ADDRESS_SPACE_TYPE_MEM  0x00\r
+#define ACPI_ADDRESS_SPACE_TYPE_IO   0x01\r
+#define ACPI_ADDRESS_SPACE_TYPE_BUS  0x02\r
 \r
 ///\r
-/// Power Management Timer frequency is fixed at 3.579545MHz\r
+/// Power Management Timer frequency is fixed at 3.579545MHz.\r
 ///\r
-#define ACPI_TIMER_FREQUENCY       3579545\r
+#define ACPI_TIMER_FREQUENCY  3579545\r
 \r
 //\r
 // Ensure proper structure formats\r
@@ -64,39 +110,195 @@ typedef struct {
 #pragma pack(1)\r
 \r
 ///\r
-/// The commond definition of QWORD, DWORD, and WORD\r
-/// Address Space Descriptors\r
+/// The common definition of QWORD, DWORD, and WORD\r
+/// Address Space Descriptors.\r
 ///\r
 typedef PACKED struct {\r
-  UINT8   Desc;\r
-  UINT16  Len;\r
-  UINT8   ResType;\r
-  UINT8   GenFlag;\r
-  UINT8   SpecificFlag;\r
-  UINT64  AddrSpaceGranularity;\r
-  UINT64  AddrRangeMin;\r
-  UINT64  AddrRangeMax;\r
-  UINT64  AddrTranslationOffset;\r
-  UINT64  AddrLen;\r
+  UINT8     Desc;\r
+  UINT16    Len;\r
+  UINT8     ResType;\r
+  UINT8     GenFlag;\r
+  UINT8     SpecificFlag;\r
+  UINT64    AddrSpaceGranularity;\r
+  UINT64    AddrRangeMin;\r
+  UINT64    AddrRangeMax;\r
+  UINT64    AddrTranslationOffset;\r
+  UINT64    AddrLen;\r
 } EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
 \r
+typedef PACKED union {\r
+  UINT8    Byte;\r
+  PACKED struct {\r
+    UINT8    Length : 3;\r
+    UINT8    Name   : 4;\r
+    UINT8    Type   : 1;\r
+  } Bits;\r
+} ACPI_SMALL_RESOURCE_HEADER;\r
+\r
+typedef PACKED struct {\r
+  PACKED union {\r
+    UINT8    Byte;\r
+    PACKED struct {\r
+      UINT8    Name : 7;\r
+      UINT8    Type : 1;\r
+    } Bits;\r
+  } Header;\r
+  UINT16    Length;\r
+} ACPI_LARGE_RESOURCE_HEADER;\r
+\r
+///\r
+/// IRQ Descriptor.\r
+///\r
+typedef PACKED struct {\r
+  ACPI_SMALL_RESOURCE_HEADER    Header;\r
+  UINT16                        Mask;\r
+} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;\r
+\r
+///\r
+/// IRQ Descriptor.\r
+///\r
+typedef PACKED struct {\r
+  ACPI_SMALL_RESOURCE_HEADER    Header;\r
+  UINT16                        Mask;\r
+  UINT8                         Information;\r
+} EFI_ACPI_IRQ_DESCRIPTOR;\r
+\r
+///\r
+/// DMA Descriptor.\r
+///\r
+typedef PACKED struct {\r
+  ACPI_SMALL_RESOURCE_HEADER    Header;\r
+  UINT8                         ChannelMask;\r
+  UINT8                         Information;\r
+} EFI_ACPI_DMA_DESCRIPTOR;\r
+\r
+///\r
+/// I/O Port Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_SMALL_RESOURCE_HEADER    Header;\r
+  UINT8                         Information;\r
+  UINT16                        BaseAddressMin;\r
+  UINT16                        BaseAddressMax;\r
+  UINT8                         Alignment;\r
+  UINT8                         Length;\r
+} EFI_ACPI_IO_PORT_DESCRIPTOR;\r
+\r
+///\r
+/// Fixed Location I/O Port Descriptor.\r
+///\r
+typedef PACKED struct {\r
+  ACPI_SMALL_RESOURCE_HEADER    Header;\r
+  UINT16                        BaseAddress;\r
+  UINT8                         Length;\r
+} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;\r
+\r
+///\r
+/// 24-Bit Memory Range Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         Information;\r
+  UINT16                        BaseAddressMin;\r
+  UINT16                        BaseAddressMax;\r
+  UINT16                        Alignment;\r
+  UINT16                        Length;\r
+} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;\r
+\r
+///\r
+/// 32-Bit Memory Range Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         Information;\r
+  UINT32                        BaseAddressMin;\r
+  UINT32                        BaseAddressMax;\r
+  UINT32                        Alignment;\r
+  UINT32                        Length;\r
+} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;\r
+\r
+///\r
+/// Fixed 32-Bit Fixed Memory Range Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         Information;\r
+  UINT32                        BaseAddress;\r
+  UINT32                        Length;\r
+} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;\r
+\r
+///\r
+/// QWORD Address Space Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         ResType;\r
+  UINT8                         GenFlag;\r
+  UINT8                         SpecificFlag;\r
+  UINT64                        AddrSpaceGranularity;\r
+  UINT64                        AddrRangeMin;\r
+  UINT64                        AddrRangeMax;\r
+  UINT64                        AddrTranslationOffset;\r
+  UINT64                        AddrLen;\r
+} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;\r
+\r
+///\r
+/// DWORD Address Space Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         ResType;\r
+  UINT8                         GenFlag;\r
+  UINT8                         SpecificFlag;\r
+  UINT32                        AddrSpaceGranularity;\r
+  UINT32                        AddrRangeMin;\r
+  UINT32                        AddrRangeMax;\r
+  UINT32                        AddrTranslationOffset;\r
+  UINT32                        AddrLen;\r
+} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;\r
+\r
+///\r
+/// WORD Address Space Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         ResType;\r
+  UINT8                         GenFlag;\r
+  UINT8                         SpecificFlag;\r
+  UINT16                        AddrSpaceGranularity;\r
+  UINT16                        AddrRangeMin;\r
+  UINT16                        AddrRangeMax;\r
+  UINT16                        AddrTranslationOffset;\r
+  UINT16                        AddrLen;\r
+} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;\r
+\r
+///\r
+/// Extended Interrupt Descriptor\r
+///\r
+typedef PACKED struct {\r
+  ACPI_LARGE_RESOURCE_HEADER    Header;\r
+  UINT8                         InterruptVectorFlags;\r
+  UINT8                         InterruptTableLength;\r
+  UINT32                        InterruptNumber[1];\r
+} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;\r
+\r
 #pragma pack()\r
 \r
 ///\r
-/// the End tag identifies an end of resource data.\r
+/// The End tag identifies an end of resource data.\r
 ///\r
 typedef struct {\r
-  UINT8 Desc;\r
-  UINT8 Checksum;\r
+  UINT8    Desc;\r
+  UINT8    Checksum;\r
 } EFI_ACPI_END_TAG_DESCRIPTOR;\r
 \r
 //\r
 // General use definitions\r
 //\r
-#define EFI_ACPI_RESERVED_BYTE  0x00\r
-#define EFI_ACPI_RESERVED_WORD  0x0000\r
-#define EFI_ACPI_RESERVED_DWORD 0x00000000\r
-#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000\r
+#define EFI_ACPI_RESERVED_BYTE   0x00\r
+#define EFI_ACPI_RESERVED_WORD   0x0000\r
+#define EFI_ACPI_RESERVED_DWORD  0x00000000\r
+#define EFI_ACPI_RESERVED_QWORD  0x0000000000000000\r
 \r
 //\r
 // Resource Type Specific Flags\r
@@ -104,27 +306,86 @@ typedef struct {
 //\r
 // Bit [0]    : Write Status, _RW\r
 //\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE                (1 << 0)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY                 (0 << 0)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE  (1 << 0)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY   (0 << 0)\r
 //\r
 // Bit [2:1]  : Memory Attributes, _MEM\r
 //\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE             (0 << 1)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE                 (1 << 1)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE    (3 << 1)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE              (0 << 1)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE                  (1 << 1)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING  (2 << 1)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE     (3 << 1)\r
 //\r
 // Bit [4:3]  : Memory Attributes, _MTP\r
 //\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY      (0 << 3)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED    (1 << 3)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI        (2 << 3)\r
-#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS         (3 << 3)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY    (0 << 3)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED  (1 << 3)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI      (2 << 3)\r
+#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS       (3 << 3)\r
 //\r
 // Bit [5]    : Memory to I/O Translation, _TTP\r
 //\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION          (1 << 5)\r
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC               (0 << 5)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION  (1 << 5)\r
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC       (0 << 5)\r
+\r
+//\r
+// IRQ Information\r
+// Ref ACPI specification 6.4.2.1\r
+//\r
+#define EFI_ACPI_IRQ_SHARABLE_MASK  0x10\r
+#define   EFI_ACPI_IRQ_SHARABLE     0x10\r
+\r
+#define EFI_ACPI_IRQ_POLARITY_MASK  0x08\r
+#define   EFI_ACPI_IRQ_HIGH_TRUE    0x00\r
+#define   EFI_ACPI_IRQ_LOW_FALSE    0x08\r
+\r
+#define EFI_ACPI_IRQ_MODE               0x01\r
+#define   EFI_ACPI_IRQ_LEVEL_TRIGGERED  0x00\r
+#define   EFI_ACPI_IRQ_EDGE_TRIGGERED   0x01\r
+\r
+//\r
+// DMA Information\r
+// Ref ACPI specification 6.4.2.2\r
+//\r
+#define EFI_ACPI_DMA_SPEED_TYPE_MASK             0x60\r
+#define   EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY  0x00\r
+#define   EFI_ACPI_DMA_SPEED_TYPE_A              0x20\r
+#define   EFI_ACPI_DMA_SPEED_TYPE_B              0x40\r
+#define   EFI_ACPI_DMA_SPEED_TYPE_F              0x60\r
+\r
+#define EFI_ACPI_DMA_BUS_MASTER_MASK  0x04\r
+#define   EFI_ACPI_DMA_BUS_MASTER     0x04\r
+\r
+#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK                0x03\r
+#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT             0x00\r
+#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT  0x01\r
+#define   EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT            0x02\r
+\r
+//\r
+// IO Information\r
+// Ref ACPI specification 6.4.2.5\r
+//\r
+#define EFI_ACPI_IO_DECODE_MASK      0x01\r
+#define   EFI_ACPI_IO_DECODE_16_BIT  0x01\r
+#define   EFI_ACPI_IO_DECODE_10_BIT  0x00\r
+\r
+//\r
+// Memory Information\r
+// Ref ACPI specification 6.4.3.4\r
+//\r
+#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK  0x01\r
+#define   EFI_ACPI_MEMORY_WRITABLE         0x01\r
+#define   EFI_ACPI_MEMORY_NON_WRITABLE     0x00\r
+\r
+//\r
+// Interrupt Vector Flags definitions for Extended Interrupt Descriptor\r
+// Ref ACPI specification 6.4.3.6\r
+//\r
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_PRODUCER_CONSUMER_MASK  BIT0\r
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_MODE_MASK               BIT1\r
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_POLARITY_MASK           BIT2\r
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_SHARABLE_MASK           BIT3\r
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_WAKE_CAPABLITY_MASK     BIT4\r
 \r
 //\r
 // Ensure proper structure formats\r
@@ -135,132 +396,135 @@ typedef struct {
 //\r
 \r
 ///\r
-/// Root System Description Pointer Structure\r
+/// Root System Description Pointer Structure.\r
 ///\r
 typedef struct {\r
-  UINT64  Signature;\r
-  UINT8   Checksum;\r
-  UINT8   OemId[6];\r
-  UINT8   Reserved;\r
-  UINT32  RsdtAddress;\r
+  UINT64    Signature;\r
+  UINT8     Checksum;\r
+  UINT8     OemId[6];\r
+  UINT8     Reserved;\r
+  UINT32    RsdtAddress;\r
 } EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;\r
 \r
 //\r
 // Root System Description Table\r
-// No definition needed as it is a common description table header, the same with \r
+// No definition needed as it is a common description table header, the same with\r
 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.\r
 //\r
 \r
 ///\r
-/// RSDT Revision (as defined in ACPI 1.0b spec.)\r
+/// RSDT Revision (as defined in ACPI 1.0b specification).\r
 ///\r
-#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
+#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01\r
 \r
 ///\r
-/// Fixed ACPI Description Table Structure (FADT)\r
+/// Fixed ACPI Description Table Structure (FADT).\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER Header;\r
-  UINT32                      FirmwareCtrl;\r
-  UINT32                      Dsdt;\r
-  UINT8                       IntModel;\r
-  UINT8                       Reserved1;\r
-  UINT16                      SciInt;\r
-  UINT32                      SmiCmd;\r
-  UINT8                       AcpiEnable;\r
-  UINT8                       AcpiDisable;\r
-  UINT8                       S4BiosReq;\r
-  UINT8                       Reserved2;\r
-  UINT32                      Pm1aEvtBlk;\r
-  UINT32                      Pm1bEvtBlk;\r
-  UINT32                      Pm1aCntBlk;\r
-  UINT32                      Pm1bCntBlk;\r
-  UINT32                      Pm2CntBlk;\r
-  UINT32                      PmTmrBlk;\r
-  UINT32                      Gpe0Blk;\r
-  UINT32                      Gpe1Blk;\r
-  UINT8                       Pm1EvtLen;\r
-  UINT8                       Pm1CntLen;\r
-  UINT8                       Pm2CntLen;\r
-  UINT8                       PmTmLen;\r
-  UINT8                       Gpe0BlkLen;\r
-  UINT8                       Gpe1BlkLen;\r
-  UINT8                       Gpe1Base;\r
-  UINT8                       Reserved3;\r
-  UINT16                      PLvl2Lat;\r
-  UINT16                      PLvl3Lat;\r
-  UINT16                      FlushSize;\r
-  UINT16                      FlushStride;\r
-  UINT8                       DutyOffset;\r
-  UINT8                       DutyWidth;\r
-  UINT8                       DayAlrm;\r
-  UINT8                       MonAlrm;\r
-  UINT8                       Century;\r
-  UINT8                       Reserved4;\r
-  UINT8                       Reserved5;\r
-  UINT8                       Reserved6;\r
-  UINT32                      Flags;\r
+  EFI_ACPI_DESCRIPTION_HEADER    Header;\r
+  UINT32                         FirmwareCtrl;\r
+  UINT32                         Dsdt;\r
+  UINT8                          IntModel;\r
+  UINT8                          Reserved1;\r
+  UINT16                         SciInt;\r
+  UINT32                         SmiCmd;\r
+  UINT8                          AcpiEnable;\r
+  UINT8                          AcpiDisable;\r
+  UINT8                          S4BiosReq;\r
+  UINT8                          Reserved2;\r
+  UINT32                         Pm1aEvtBlk;\r
+  UINT32                         Pm1bEvtBlk;\r
+  UINT32                         Pm1aCntBlk;\r
+  UINT32                         Pm1bCntBlk;\r
+  UINT32                         Pm2CntBlk;\r
+  UINT32                         PmTmrBlk;\r
+  UINT32                         Gpe0Blk;\r
+  UINT32                         Gpe1Blk;\r
+  UINT8                          Pm1EvtLen;\r
+  UINT8                          Pm1CntLen;\r
+  UINT8                          Pm2CntLen;\r
+  UINT8                          PmTmLen;\r
+  UINT8                          Gpe0BlkLen;\r
+  UINT8                          Gpe1BlkLen;\r
+  UINT8                          Gpe1Base;\r
+  UINT8                          Reserved3;\r
+  UINT16                         PLvl2Lat;\r
+  UINT16                         PLvl3Lat;\r
+  UINT16                         FlushSize;\r
+  UINT16                         FlushStride;\r
+  UINT8                          DutyOffset;\r
+  UINT8                          DutyWidth;\r
+  UINT8                          DayAlrm;\r
+  UINT8                          MonAlrm;\r
+  UINT8                          Century;\r
+  UINT8                          Reserved4;\r
+  UINT8                          Reserved5;\r
+  UINT8                          Reserved6;\r
+  UINT32                         Flags;\r
 } EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
 \r
 ///\r
-/// FADT Version (as defined in ACPI 1.0b spec.)\r
+/// FADT Version (as defined in ACPI 1.0b specification).\r
 ///\r
 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x01\r
 \r
+#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC       0\r
+#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC  1\r
+\r
 //\r
 // Fixed ACPI Description Table Fixed Feature Flags\r
 // All other bits are reserved and must be set to 0.\r
 //\r
-#define EFI_ACPI_1_0_WBINVD               BIT0\r
-#define EFI_ACPI_1_0_WBINVD_FLUSH         BIT1\r
-#define EFI_ACPI_1_0_PROC_C1              BIT2\r
-#define EFI_ACPI_1_0_P_LVL2_UP            BIT3\r
-#define EFI_ACPI_1_0_PWR_BUTTON           BIT4\r
-#define EFI_ACPI_1_0_SLP_BUTTON           BIT5\r
-#define EFI_ACPI_1_0_FIX_RTC              BIT6\r
-#define EFI_ACPI_1_0_RTC_S4               BIT7\r
-#define EFI_ACPI_1_0_TMR_VAL_EXT          BIT8\r
-#define EFI_ACPI_1_0_DCK_CAP              BIT9\r
+#define EFI_ACPI_1_0_WBINVD        BIT0\r
+#define EFI_ACPI_1_0_WBINVD_FLUSH  BIT1\r
+#define EFI_ACPI_1_0_PROC_C1       BIT2\r
+#define EFI_ACPI_1_0_P_LVL2_UP     BIT3\r
+#define EFI_ACPI_1_0_PWR_BUTTON    BIT4\r
+#define EFI_ACPI_1_0_SLP_BUTTON    BIT5\r
+#define EFI_ACPI_1_0_FIX_RTC       BIT6\r
+#define EFI_ACPI_1_0_RTC_S4        BIT7\r
+#define EFI_ACPI_1_0_TMR_VAL_EXT   BIT8\r
+#define EFI_ACPI_1_0_DCK_CAP       BIT9\r
 \r
 ///\r
-/// Firmware ACPI Control Structure\r
+/// Firmware ACPI Control Structure.\r
 ///\r
 typedef struct {\r
-  UINT32  Signature;\r
-  UINT32  Length;\r
-  UINT32  HardwareSignature;\r
-  UINT32  FirmwareWakingVector;\r
-  UINT32  GlobalLock;\r
-  UINT32  Flags;\r
-  UINT8   Reserved[40];\r
+  UINT32    Signature;\r
+  UINT32    Length;\r
+  UINT32    HardwareSignature;\r
+  UINT32    FirmwareWakingVector;\r
+  UINT32    GlobalLock;\r
+  UINT32    Flags;\r
+  UINT8     Reserved[40];\r
 } EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
 \r
 ///\r
-/// Firmware Control Structure Feature Flags\r
+/// Firmware Control Structure Feature Flags.\r
 /// All other bits are reserved and must be set to 0.\r
 ///\r
-#define EFI_ACPI_1_0_S4BIOS_F             BIT0\r
+#define EFI_ACPI_1_0_S4BIOS_F  BIT0\r
 \r
 ///\r
 /// Multiple APIC Description Table header definition.  The rest of the table\r
-/// must be defined in a platform specific manner.\r
+/// must be defined in a platform-specific manner.\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER Header;\r
-  UINT32                      LocalApicAddress;\r
-  UINT32                      Flags;\r
+  EFI_ACPI_DESCRIPTION_HEADER    Header;\r
+  UINT32                         LocalApicAddress;\r
+  UINT32                         Flags;\r
 } EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
 \r
 ///\r
-/// MADT Revision (as defined in ACPI 1.0b spec.)\r
+/// MADT Revision (as defined in ACPI 1.0b specification).\r
 ///\r
-#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01\r
+#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x01\r
 \r
 ///\r
 /// Multiple APIC Flags\r
 /// All other bits are reserved and must be set to 0.\r
 ///\r
-#define EFI_ACPI_1_0_PCAT_COMPAT           BIT0\r
+#define EFI_ACPI_1_0_PCAT_COMPAT  BIT0\r
 \r
 //\r
 // Multiple APIC Description Table APIC structure types\r
@@ -278,74 +542,74 @@ typedef struct {
 //\r
 \r
 ///\r
-/// Processor Local APIC Structure Definition\r
+/// Processor Local APIC Structure Definition.\r
 ///\r
 typedef struct {\r
-  UINT8   Type;\r
-  UINT8   Length;\r
-  UINT8   AcpiProcessorId;\r
-  UINT8   ApicId;\r
-  UINT32  Flags;\r
+  UINT8     Type;\r
+  UINT8     Length;\r
+  UINT8     AcpiProcessorId;\r
+  UINT8     ApicId;\r
+  UINT32    Flags;\r
 } EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;\r
 \r
 ///\r
 /// Local APIC Flags.  All other bits are reserved and must be 0.\r
 ///\r
-#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED      BIT0\r
+#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED  BIT0\r
 \r
 ///\r
-/// IO APIC Structure\r
+/// IO APIC Structure.\r
 ///\r
 typedef struct {\r
-  UINT8   Type;\r
-  UINT8   Length;\r
-  UINT8   IoApicId;\r
-  UINT8   Reserved;\r
-  UINT32  IoApicAddress;\r
-  UINT32  SystemVectorBase;\r
+  UINT8     Type;\r
+  UINT8     Length;\r
+  UINT8     IoApicId;\r
+  UINT8     Reserved;\r
+  UINT32    IoApicAddress;\r
+  UINT32    SystemVectorBase;\r
 } EFI_ACPI_1_0_IO_APIC_STRUCTURE;\r
 \r
 ///\r
-/// Interrupt Source Override Structure\r
+/// Interrupt Source Override Structure.\r
 ///\r
 typedef struct {\r
-  UINT8   Type;\r
-  UINT8   Length;\r
-  UINT8   Bus;\r
-  UINT8   Source;\r
-  UINT32  GlobalSystemInterruptVector;\r
-  UINT16  Flags;\r
+  UINT8     Type;\r
+  UINT8     Length;\r
+  UINT8     Bus;\r
+  UINT8     Source;\r
+  UINT32    GlobalSystemInterruptVector;\r
+  UINT16    Flags;\r
 } EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
 \r
 ///\r
-/// Non-Maskable Interrupt Source Structure\r
+/// Non-Maskable Interrupt Source Structure.\r
 ///\r
 typedef struct {\r
-  UINT8   Type;\r
-  UINT8   Length;\r
-  UINT16  Flags;\r
-  UINT32  GlobalSystemInterruptVector;\r
+  UINT8     Type;\r
+  UINT8     Length;\r
+  UINT16    Flags;\r
+  UINT32    GlobalSystemInterruptVector;\r
 } EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
 \r
 ///\r
-/// Local APIC NMI Structure\r
+/// Local APIC NMI Structure.\r
 ///\r
 typedef struct {\r
-  UINT8   Type;\r
-  UINT8   Length;\r
-  UINT8   AcpiProcessorId;\r
-  UINT16  Flags;\r
-  UINT8   LocalApicInti;\r
+  UINT8     Type;\r
+  UINT8     Length;\r
+  UINT8     AcpiProcessorId;\r
+  UINT16    Flags;\r
+  UINT8     LocalApicInti;\r
 } EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;\r
 \r
 ///\r
 /// Smart Battery Description Table (SBST)\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER Header;\r
-  UINT32                      WarningEnergyLevel;\r
-  UINT32                      LowEnergyLevel;\r
-  UINT32                      CriticalEnergyLevel;\r
+  EFI_ACPI_DESCRIPTION_HEADER    Header;\r
+  UINT32                         WarningEnergyLevel;\r
+  UINT32                         LowEnergyLevel;\r
+  UINT32                         CriticalEnergyLevel;\r
 } EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;\r
 \r
 //\r
@@ -353,47 +617,47 @@ typedef struct {
 //\r
 \r
 ///\r
-/// "RSD PTR " Root System Description Pointer\r
+/// "RSD PTR " Root System Description Pointer.\r
 ///\r
 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')\r
 \r
 ///\r
-/// "APIC" Multiple APIC Description Table\r
+/// "APIC" Multiple APIC Description Table.\r
 ///\r
 #define EFI_ACPI_1_0_APIC_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')\r
 \r
 ///\r
-/// "DSDT" Differentiated System Description Table\r
+/// "DSDT" Differentiated System Description Table.\r
 ///\r
 #define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')\r
 \r
 ///\r
-/// "FACS" Firmware ACPI Control Structure\r
+/// "FACS" Firmware ACPI Control Structure.\r
 ///\r
 #define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')\r
 \r
 ///\r
-/// "FACP" Fixed ACPI Description Table\r
+/// "FACP" Fixed ACPI Description Table.\r
 ///\r
 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')\r
 \r
 ///\r
-/// "PSDT" Persistent System Description Table\r
+/// "PSDT" Persistent System Description Table.\r
 ///\r
 #define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')\r
 \r
 ///\r
-/// "RSDT" Root System Description Table\r
+/// "RSDT" Root System Description Table.\r
 ///\r
 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')\r
 \r
 ///\r
-/// "SBST" Smart Battery Specification Table\r
+/// "SBST" Smart Battery Specification Table.\r
 ///\r
 #define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')\r
 \r
 ///\r
-/// "SSDT" Secondary System Description Table\r
+/// "SSDT" Secondary System Description Table.\r
 ///\r
 #define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')\r
 \r