2 Defives data structures per MultiProcessor Specification Ver 1.4.
4 The MultiProcessor Specification defines an enhancement to the standard
5 to which PC manufacturers design DOS-compatible systems.
7 Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #ifndef _LEGACY_BIOS_MPTABLE_H_
13 #define _LEGACY_BIOS_MPTABLE_H_
15 #define EFI_LEGACY_MP_TABLE_REV_1_4 0x04
18 // Define MP table structures. All are packed.
22 #define EFI_LEGACY_MP_TABLE_FLOATING_POINTER_SIGNATURE SIGNATURE_32 ('_', 'M', 'P', '_')
25 UINT32 MutipleClk
: 1;
27 UINT32 Reserved2
: 24;
32 UINT32 PhysicalAddress
;
37 FEATUREBYTE2_5 FeatureByte2_5
;
38 } EFI_LEGACY_MP_TABLE_FLOATING_POINTER
;
40 #define EFI_LEGACY_MP_TABLE_HEADER_SIGNATURE SIGNATURE_32 ('P', 'C', 'M', 'P')
43 UINT16 BaseTableLength
;
47 CHAR8 OemProductId
[12];
48 UINT32 OemTablePointer
;
51 UINT32 LocalApicAddress
;
52 UINT16 ExtendedTableLength
;
53 UINT8 ExtendedChecksum
;
55 } EFI_LEGACY_MP_TABLE_HEADER
;
59 } EFI_LEGACY_MP_TABLE_ENTRY_TYPE
;
62 // Entry Type 0: Processor.
64 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_PROCESSOR 0x00
69 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FLAGS
;
76 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_SIGNATURE
;
84 UINT32 Reserved2
: 22;
85 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FEATURES
;
91 EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FLAGS Flags
;
92 EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_SIGNATURE Signature
;
93 EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FEATURES Features
;
96 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR
;
101 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_BUS 0x01
106 } EFI_LEGACY_MP_TABLE_ENTRY_BUS
;
108 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUS "CBUS " // Corollary CBus
109 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUSII "CBUSII" // Corollary CBUS II
110 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_EISA "EISA " // Extended ISA
111 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_FUTURE "FUTURE" // IEEE FutureBus
112 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_INTERN "INTERN" // Internal bus
113 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_ISA "ISA " // Industry Standard Architecture
114 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBI "MBI " // Multibus I
115 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBII "MBII " // Multibus II
116 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MCA "MCA " // Micro Channel Architecture
117 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPI "MPI " // MPI
118 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPSA "MPSA " // MPSA
119 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_NUBUS "NUBUS " // Apple Macintosh NuBus
120 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCI "PCI " // Peripheral Component Interconnect
121 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCMCIA "PCMCIA" // PC Memory Card International Assoc.
122 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_TC "TC " // DEC TurboChannel
123 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VL "VL " // VESA Local Bus
124 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VME "VME " // VMEbus
125 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_XPRESS "XPRESS" // Express System Bus
127 // Entry Type 2: I/O APIC.
129 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IOAPIC 0x02
133 } EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC_FLAGS
;
139 EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC_FLAGS Flags
;
141 } EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC
;
144 // Entry Type 3: I/O Interrupt Assignment.
146 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IO_INT 0x03
150 UINT16 Reserved
: 12;
151 } EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS
;
157 } EFI_LEGACY_MP_TABLE_ENTRY_INT_FIELDS
;
160 EFI_LEGACY_MP_TABLE_ENTRY_INT_FIELDS fields
;
162 } EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ
;
167 EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS Flags
;
169 EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ SourceBusIrq
;
172 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT
;
175 EfiLegacyMpTableEntryIoIntTypeInt
= 0,
176 EfiLegacyMpTableEntryIoIntTypeNmi
= 1,
177 EfiLegacyMpTableEntryIoIntTypeSmi
= 2,
178 EfiLegacyMpTableEntryIoIntTypeExtInt
= 3,
179 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_TYPE
;
182 EfiLegacyMpTableEntryIoIntFlagsPolaritySpec
= 0x0,
183 EfiLegacyMpTableEntryIoIntFlagsPolarityActiveHigh
= 0x1,
184 EfiLegacyMpTableEntryIoIntFlagsPolarityReserved
= 0x2,
185 EfiLegacyMpTableEntryIoIntFlagsPolarityActiveLow
= 0x3,
186 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_FLAGS_POLARITY
;
189 EfiLegacyMpTableEntryIoIntFlagsTriggerSpec
= 0x0,
190 EfiLegacyMpTableEntryIoIntFlagsTriggerEdge
= 0x1,
191 EfiLegacyMpTableEntryIoIntFlagsTriggerReserved
= 0x2,
192 EfiLegacyMpTableEntryIoIntFlagsTriggerLevel
= 0x3,
193 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_FLAGS_TRIGGER
;
196 // Entry Type 4: Local Interrupt Assignment.
198 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_LOCAL_INT 0x04
202 EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS Flags
;
204 EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ SourceBusIrq
;
207 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT
;
210 EfiLegacyMpTableEntryLocalIntTypeInt
= 0,
211 EfiLegacyMpTableEntryLocalIntTypeNmi
= 1,
212 EfiLegacyMpTableEntryLocalIntTypeSmi
= 2,
213 EfiLegacyMpTableEntryLocalIntTypeExtInt
= 3,
214 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_TYPE
;
217 EfiLegacyMpTableEntryLocalIntFlagsPolaritySpec
= 0x0,
218 EfiLegacyMpTableEntryLocalIntFlagsPolarityActiveHigh
= 0x1,
219 EfiLegacyMpTableEntryLocalIntFlagsPolarityReserved
= 0x2,
220 EfiLegacyMpTableEntryLocalIntFlagsPolarityActiveLow
= 0x3,
221 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_FLAGS_POLARITY
;
224 EfiLegacyMpTableEntryLocalIntFlagsTriggerSpec
= 0x0,
225 EfiLegacyMpTableEntryLocalIntFlagsTriggerEdge
= 0x1,
226 EfiLegacyMpTableEntryLocalIntFlagsTriggerReserved
= 0x2,
227 EfiLegacyMpTableEntryLocalIntFlagsTriggerLevel
= 0x3,
228 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_FLAGS_TRIGGER
;
231 // Entry Type 128: System Address Space Mapping.
233 #define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_SYS_ADDR_SPACE_MAPPING 0x80
240 UINT64 AddressLength
;
241 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING
;
244 EfiLegacyMpTableEntryExtSysAddrSpaceMappingIo
= 0,
245 EfiLegacyMpTableEntryExtSysAddrSpaceMappingMemory
= 1,
246 EfiLegacyMpTableEntryExtSysAddrSpaceMappingPrefetch
= 2,
247 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING_TYPE
;
250 // Entry Type 129: Bus Hierarchy.
252 #define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_BUS_HIERARCHY 0x81
254 UINT8 SubtractiveDecode
: 1;
256 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY_BUSINFO
;
262 EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY_BUSINFO BusInfo
;
267 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY
;
270 // Entry Type 130: Compatibility Bus Address Space Modifier.
272 #define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_COMPAT_BUS_ADDR_SPACE_MODIFIER 0x82
276 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER_ADDR_MODE
;
282 EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER_ADDR_MODE AddrMode
;
283 UINT32 PredefinedRangeList
;
284 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER
;