]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/Include/IndustryStandard/LegacyBiosMpTable.h
Add missing IndustryStandard.
[mirror_edk2.git] / DuetPkg / Include / IndustryStandard / LegacyBiosMpTable.h
diff --git a/DuetPkg/Include/IndustryStandard/LegacyBiosMpTable.h b/DuetPkg/Include/IndustryStandard/LegacyBiosMpTable.h
new file mode 100644 (file)
index 0000000..9feb6f0
--- /dev/null
@@ -0,0 +1,281 @@
+/*++\r
+\r
+Copyright (c) 2007, 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
+\r
+Module Name:\r
+\r
+  LegacyBiosMpTable.h\r
+\r
+Abstract:\r
+  Defives data structures per Multi Processor Specification Ver 1.4.\r
+\r
+--*/\r
+\r
+#ifndef LEGACY_BIOS_MPTABLE_H_\r
+#define LEGACY_BIOS_MPTABLE_H_\r
+\r
+#define EFI_LEGACY_MP_TABLE_REV_1_4 0x04\r
+\r
+//\r
+// Define MP table structures. All are packed.\r
+//\r
+#pragma pack(push, 1)\r
+\r
+#define EFI_LEGACY_MP_TABLE_FLOATING_POINTER_SIGNATURE  EFI_SIGNATURE_32 ('_', 'M', 'P', '_')\r
+typedef struct {\r
+  UINT32  Signature;\r
+  UINT32  PhysicalAddress;\r
+  UINT8   Length;\r
+  UINT8   SpecRev;\r
+  UINT8   Checksum;\r
+  UINT8   FeatureByte1;\r
+  struct {\r
+    UINT32  Reserved1 : 6;\r
+    UINT32  MutipleClk : 1;\r
+    UINT32  Imcr : 1;\r
+    UINT32  Reserved2 : 24;\r
+  } FeatureByte2_5;\r
+} EFI_LEGACY_MP_TABLE_FLOATING_POINTER;\r
+\r
+#define EFI_LEGACY_MP_TABLE_HEADER_SIGNATURE  EFI_SIGNATURE_32 ('P', 'C', 'M', 'P')\r
+typedef struct {\r
+  UINT32  Signature;\r
+  UINT16  BaseTableLength;\r
+  UINT8   SpecRev;\r
+  UINT8   Checksum;\r
+  CHAR8   OemId[8];\r
+  CHAR8   OemProductId[12];\r
+  UINT32  OemTablePointer;\r
+  UINT16  OemTableSize;\r
+  UINT16  EntryCount;\r
+  UINT32  LocalApicAddress;\r
+  UINT16  ExtendedTableLength;\r
+  UINT8   ExtendedChecksum;\r
+  UINT8   Reserved;\r
+} EFI_LEGACY_MP_TABLE_HEADER;\r
+\r
+typedef struct {\r
+  UINT8 EntryType;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_TYPE;\r
+\r
+//\r
+// Entry Type 0: Processor.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_PROCESSOR  0x00\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 Id;\r
+  UINT8 Ver;\r
+  struct {\r
+    UINT8 Enabled : 1;\r
+    UINT8 Bsp : 1;\r
+    UINT8 Reserved : 6;\r
+  } Flags;\r
+  struct {\r
+    UINT32  Stepping : 4;\r
+    UINT32  Model : 4;\r
+    UINT32  Family : 4;\r
+    UINT32  Reserved : 20;\r
+  } Signature;\r
+  struct {\r
+    UINT32  Fpu : 1;\r
+    UINT32  Reserved1 : 6;\r
+    UINT32  Mce : 1;\r
+    UINT32  Cx8 : 1;\r
+    UINT32  Apic : 1;\r
+    UINT32  Reserved2 : 22;\r
+  } Features;\r
+  UINT32  Reserved1;\r
+  UINT32  Reserved2;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR;\r
+\r
+//\r
+// Entry Type 1: Bus.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_BUS  0x01\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 Id;\r
+  CHAR8 TypeString[6];\r
+} EFI_LEGACY_MP_TABLE_ENTRY_BUS;\r
+\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUS   "CBUS  "  // Corollary CBus\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUSII "CBUSII"  // Corollary CBUS II\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_EISA   "EISA  "  // Extended ISA\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_FUTURE "FUTURE"  // IEEE FutureBus\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_INTERN "INTERN"  // Internal bus\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_ISA    "ISA   "  // Industry Standard Architecture\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBI    "MBI   "  // Multibus I\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBII   "MBII  "  // Multibus II\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MCA    "MCA   "  // Micro Channel Architecture\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPI    "MPI   "  // MPI\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPSA   "MPSA  "  // MPSA\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_NUBUS  "NUBUS "  // Apple Macintosh NuBus\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCI    "PCI   "  // Peripheral Component Interconnect\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCMCIA "PCMCIA"  // PC Memory Card International Assoc.\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_TC     "TC    "  // DEC TurboChannel\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VL     "VL    "  // VESA Local Bus\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VME    "VME   "  // VMEbus\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_XPRESS "XPRESS"  // Express System Bus\r
+//\r
+// Entry Type 2: I/O APIC.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IOAPIC 0x02\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 Id;\r
+  UINT8 Ver;\r
+  struct {\r
+    UINT8 Enabled : 1;\r
+    UINT8 Reserved : 7;\r
+  } Flags;\r
+  UINT32  Address;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC;\r
+\r
+//\r
+// Entry Type 3: I/O Interrupt Assignment.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IO_INT 0x03\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 IntType;\r
+  struct {\r
+    UINT16  Polarity : 2;\r
+    UINT16  Trigger : 2;\r
+    UINT16  Reserved : 12;\r
+  } Flags;\r
+  UINT8 SourceBusId;\r
+  union {\r
+    struct {\r
+      UINT8 IntNo : 2;\r
+      UINT8 Dev : 5;\r
+      UINT8 Reserved : 1;\r
+    } fields;\r
+    UINT8 byte;\r
+  } SourceBusIrq;\r
+  UINT8 DestApicId;\r
+  UINT8 DestApicIntIn;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_IO_INT;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryIoIntTypeInt   = 0,\r
+  EfiLegacyMpTableEntryIoIntTypeNmi   = 1,\r
+  EfiLegacyMpTableEntryIoIntTypeSmi   = 2,\r
+  EfiLegacyMpTableEntryIoIntTypeExtInt= 3,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_TYPE;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryIoIntFlagsPolaritySpec       = 0x0,\r
+  EfiLegacyMpTableEntryIoIntFlagsPolarityActiveHigh = 0x1,\r
+  EfiLegacyMpTableEntryIoIntFlagsPolarityReserved   = 0x2,\r
+  EfiLegacyMpTableEntryIoIntFlagsPolarityActiveLow  = 0x3,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_FLAGS_POLARITY;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryIoIntFlagsTriggerSpec        = 0x0,\r
+  EfiLegacyMpTableEntryIoIntFlagsTriggerEdge        = 0x1,\r
+  EfiLegacyMpTableEntryIoIntFlagsTriggerReserved    = 0x2,\r
+  EfiLegacyMpTableEntryIoIntFlagsTriggerLevel       = 0x3,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_FLAGS_TRIGGER;\r
+\r
+//\r
+// Entry Type 4: Local Interrupt Assignment.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_LOCAL_INT  0x04\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 IntType;\r
+  struct {\r
+    UINT16  Polarity : 2;\r
+    UINT16  Trigger : 2;\r
+    UINT16  Reserved : 12;\r
+  } Flags;\r
+  UINT8 SourceBusId;\r
+  UINT8 SourceBusIrq;\r
+  UINT8 DestApicId;\r
+  UINT8 DestApicIntIn;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryLocalIntTypeInt              = 0,\r
+  EfiLegacyMpTableEntryLocalIntTypeNmi              = 1,\r
+  EfiLegacyMpTableEntryLocalIntTypeSmi              = 2,\r
+  EfiLegacyMpTableEntryLocalIntTypeExtInt           = 3,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_TYPE;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryLocalIntFlagsPolaritySpec      = 0x0,\r
+  EfiLegacyMpTableEntryLocalIntFlagsPolarityActiveHigh= 0x1,\r
+  EfiLegacyMpTableEntryLocalIntFlagsPolarityReserved  = 0x2,\r
+  EfiLegacyMpTableEntryLocalIntFlagsPolarityActiveLow = 0x3,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_FLAGS_POLARITY;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryLocalIntFlagsTriggerSpec       = 0x0,\r
+  EfiLegacyMpTableEntryLocalIntFlagsTriggerEdge       = 0x1,\r
+  EfiLegacyMpTableEntryLocalIntFlagsTriggerReserved   = 0x2,\r
+  EfiLegacyMpTableEntryLocalIntFlagsTriggerLevel      = 0x3,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_FLAGS_TRIGGER;\r
+\r
+//\r
+// Entry Type 128: System Address Space Mapping.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_SYS_ADDR_SPACE_MAPPING 0x80\r
+typedef struct {\r
+  UINT8   EntryType;\r
+  UINT8   Length;\r
+  UINT8   BusId;\r
+  UINT8   AddressType;\r
+  UINT64  AddressBase;\r
+  UINT64  AddressLength;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING;\r
+\r
+typedef enum {\r
+  EfiLegacyMpTableEntryExtSysAddrSpaceMappingIo       = 0,\r
+  EfiLegacyMpTableEntryExtSysAddrSpaceMappingMemory   = 1,\r
+  EfiLegacyMpTableEntryExtSysAddrSpaceMappingPrefetch = 2,\r
+} EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING_TYPE;\r
+\r
+//\r
+// Entry Type 129: Bus Hierarchy.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_BUS_HIERARCHY  0x81\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 Length;\r
+  UINT8 BusId;\r
+  struct {\r
+    UINT8 SubtractiveDecode : 1;\r
+    UINT8 Reserved : 7;\r
+  } BusInfo;\r
+  UINT8 ParentBus;\r
+  UINT8 Reserved1;\r
+  UINT8 Reserved2;\r
+  UINT8 Reserved3;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY;\r
+\r
+//\r
+// Entry Type 130: Compatibility Bus Address Space Modifier.\r
+//\r
+#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_COMPAT_BUS_ADDR_SPACE_MODIFIER 0x82\r
+typedef struct {\r
+  UINT8 EntryType;\r
+  UINT8 Length;\r
+  UINT8 BusId;\r
+  struct {\r
+    UINT8 RangeMode : 1;\r
+    UINT8 Reserved : 7;\r
+  } AddrMode;\r
+  UINT32  PredefinedRangeList;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER;\r
+\r
+#pragma pack(pop)\r
+\r
+#endif\r