-/*++\r
+/** @file\r
Defives data structures per MultiProcessor Specification Ver 1.4.\r
\r
The MultiProcessor Specification defines an enhancement to the standard \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
---*/\r
+**/\r
\r
#ifndef _LEGACY_BIOS_MPTABLE_H_\r
#define _LEGACY_BIOS_MPTABLE_H_\r
#pragma pack(1)\r
\r
#define EFI_LEGACY_MP_TABLE_FLOATING_POINTER_SIGNATURE SIGNATURE_32 ('_', 'M', 'P', '_')\r
+typedef struct {\r
+ UINT32 Reserved1 : 6;\r
+ UINT32 MutipleClk : 1;\r
+ UINT32 Imcr : 1;\r
+ UINT32 Reserved2 : 24;\r
+} FRATUREBYTE2_5;\r
+\r
typedef struct {\r
UINT32 Signature;\r
UINT32 PhysicalAddress;\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
+ FRATUREBYTE2_5 FeatureByte2_5;\r
} EFI_LEGACY_MP_TABLE_FLOATING_POINTER;\r
\r
#define EFI_LEGACY_MP_TABLE_HEADER_SIGNATURE SIGNATURE_32 ('P', 'C', 'M', 'P')\r
// Entry Type 0: Processor.\r
//\r
#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_PROCESSOR 0x00\r
+typedef struct {\r
+ UINT8 Enabled : 1;\r
+ UINT8 Bsp : 1;\r
+ UINT8 Reserved : 6;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FLAGS;\r
+\r
+typedef struct {\r
+ UINT32 Stepping : 4;\r
+ UINT32 Model : 4;\r
+ UINT32 Family : 4;\r
+ UINT32 Reserved : 20;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_SIGNATURE;\r
+\r
+typedef 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
+} EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FEATURES;\r
+\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
+ EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FLAGS Flags;\r
+ EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_SIGNATURE Signature;\r
+ EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FEATURES Features;\r
UINT32 Reserved1;\r
UINT32 Reserved2;\r
} EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR;\r
// Entry Type 2: I/O APIC.\r
//\r
#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IOAPIC 0x02\r
+typedef struct {\r
+ UINT8 Enabled : 1;\r
+ UINT8 Reserved : 7;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC_FLAGS;\r
+\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
+ EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC_FLAGS Flags;\r
UINT32 Address;\r
} EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC;\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
+ UINT16 Polarity : 2;\r
+ UINT16 Trigger : 2;\r
+ UINT16 Reserved : 12;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS;\r
+\r
+typedef struct {\r
+ UINT8 IntNo : 2;\r
+ UINT8 Dev : 5;\r
+ UINT8 Reserved : 1;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_INT_FIELDS;\r
+\r
+typedef union {\r
+ EFI_LEGACY_MP_TABLE_ENTRY_INT_FIELDS fields;\r
+ UINT8 byte;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ;\r
+\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
+ EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS 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
+ EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ SourceBusIrq;\r
UINT8 DestApicId;\r
UINT8 DestApicIntIn;\r
} EFI_LEGACY_MP_TABLE_ENTRY_IO_INT;\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
+ EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS 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
+ EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ SourceBusIrq;\r
UINT8 DestApicId;\r
UINT8 DestApicIntIn;\r
} EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT;\r
// Entry Type 129: Bus Hierarchy.\r
//\r
#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_BUS_HIERARCHY 0x81\r
+typedef struct {\r
+ UINT8 SubtractiveDecode : 1;\r
+ UINT8 Reserved : 7;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY_BUSINFO;\r
+\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
+ EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY_BUSINFO BusInfo;\r
UINT8 ParentBus;\r
UINT8 Reserved1;\r
UINT8 Reserved2;\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 RangeMode : 1;\r
+ UINT8 Reserved : 7;\r
+} EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER_ADDR_MODE;\r
+\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
+ EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER_ADDR_MODE AddrMode;\r
UINT32 PredefinedRangeList;\r
} EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER;\r
\r