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 - 2011, Intel Corporation. All rights reserved.<BR>
8 This program and the accompanying materials
9 are licensed and made available under the terms and conditions of the BSD License
10 which accompanies this distribution. The full text of the license may be found at
11 http://opensource.org/licenses/bsd-license.php
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 #ifndef _LEGACY_BIOS_MPTABLE_H_
19 #define _LEGACY_BIOS_MPTABLE_H_
21 #define EFI_LEGACY_MP_TABLE_REV_1_4 0x04
24 // Define MP table structures. All are packed.
28 #define EFI_LEGACY_MP_TABLE_FLOATING_POINTER_SIGNATURE SIGNATURE_32 ('_', 'M', 'P', '_')
31 UINT32 MutipleClk
: 1;
33 UINT32 Reserved2
: 24;
38 UINT32 PhysicalAddress
;
43 FEATUREBYTE2_5 FeatureByte2_5
;
44 } EFI_LEGACY_MP_TABLE_FLOATING_POINTER
;
46 #define EFI_LEGACY_MP_TABLE_HEADER_SIGNATURE SIGNATURE_32 ('P', 'C', 'M', 'P')
49 UINT16 BaseTableLength
;
53 CHAR8 OemProductId
[12];
54 UINT32 OemTablePointer
;
57 UINT32 LocalApicAddress
;
58 UINT16 ExtendedTableLength
;
59 UINT8 ExtendedChecksum
;
61 } EFI_LEGACY_MP_TABLE_HEADER
;
65 } EFI_LEGACY_MP_TABLE_ENTRY_TYPE
;
68 // Entry Type 0: Processor.
70 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_PROCESSOR 0x00
75 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FLAGS
;
82 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_SIGNATURE
;
90 UINT32 Reserved2
: 22;
91 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FEATURES
;
97 EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FLAGS Flags
;
98 EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_SIGNATURE Signature
;
99 EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR_FEATURES Features
;
102 } EFI_LEGACY_MP_TABLE_ENTRY_PROCESSOR
;
105 // Entry Type 1: Bus.
107 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_BUS 0x01
112 } EFI_LEGACY_MP_TABLE_ENTRY_BUS
;
114 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUS "CBUS " // Corollary CBus
115 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUSII "CBUSII" // Corollary CBUS II
116 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_EISA "EISA " // Extended ISA
117 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_FUTURE "FUTURE" // IEEE FutureBus
118 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_INTERN "INTERN" // Internal bus
119 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_ISA "ISA " // Industry Standard Architecture
120 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBI "MBI " // Multibus I
121 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBII "MBII " // Multibus II
122 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MCA "MCA " // Micro Channel Architecture
123 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPI "MPI " // MPI
124 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPSA "MPSA " // MPSA
125 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_NUBUS "NUBUS " // Apple Macintosh NuBus
126 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCI "PCI " // Peripheral Component Interconnect
127 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCMCIA "PCMCIA" // PC Memory Card International Assoc.
128 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_TC "TC " // DEC TurboChannel
129 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VL "VL " // VESA Local Bus
130 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VME "VME " // VMEbus
131 #define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_XPRESS "XPRESS" // Express System Bus
133 // Entry Type 2: I/O APIC.
135 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IOAPIC 0x02
139 } EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC_FLAGS
;
145 EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC_FLAGS Flags
;
147 } EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC
;
150 // Entry Type 3: I/O Interrupt Assignment.
152 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IO_INT 0x03
156 UINT16 Reserved
: 12;
157 } EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS
;
163 } EFI_LEGACY_MP_TABLE_ENTRY_INT_FIELDS
;
166 EFI_LEGACY_MP_TABLE_ENTRY_INT_FIELDS fields
;
168 } EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ
;
173 EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS Flags
;
175 EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ SourceBusIrq
;
178 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT
;
181 EfiLegacyMpTableEntryIoIntTypeInt
= 0,
182 EfiLegacyMpTableEntryIoIntTypeNmi
= 1,
183 EfiLegacyMpTableEntryIoIntTypeSmi
= 2,
184 EfiLegacyMpTableEntryIoIntTypeExtInt
= 3,
185 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_TYPE
;
188 EfiLegacyMpTableEntryIoIntFlagsPolaritySpec
= 0x0,
189 EfiLegacyMpTableEntryIoIntFlagsPolarityActiveHigh
= 0x1,
190 EfiLegacyMpTableEntryIoIntFlagsPolarityReserved
= 0x2,
191 EfiLegacyMpTableEntryIoIntFlagsPolarityActiveLow
= 0x3,
192 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_FLAGS_POLARITY
;
195 EfiLegacyMpTableEntryIoIntFlagsTriggerSpec
= 0x0,
196 EfiLegacyMpTableEntryIoIntFlagsTriggerEdge
= 0x1,
197 EfiLegacyMpTableEntryIoIntFlagsTriggerReserved
= 0x2,
198 EfiLegacyMpTableEntryIoIntFlagsTriggerLevel
= 0x3,
199 } EFI_LEGACY_MP_TABLE_ENTRY_IO_INT_FLAGS_TRIGGER
;
202 // Entry Type 4: Local Interrupt Assignment.
204 #define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_LOCAL_INT 0x04
208 EFI_LEGACY_MP_TABLE_ENTRY_INT_FLAGS Flags
;
210 EFI_LEGACY_MP_TABLE_ENTRY_INT_SOURCE_BUS_IRQ SourceBusIrq
;
213 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT
;
216 EfiLegacyMpTableEntryLocalIntTypeInt
= 0,
217 EfiLegacyMpTableEntryLocalIntTypeNmi
= 1,
218 EfiLegacyMpTableEntryLocalIntTypeSmi
= 2,
219 EfiLegacyMpTableEntryLocalIntTypeExtInt
= 3,
220 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_TYPE
;
223 EfiLegacyMpTableEntryLocalIntFlagsPolaritySpec
= 0x0,
224 EfiLegacyMpTableEntryLocalIntFlagsPolarityActiveHigh
= 0x1,
225 EfiLegacyMpTableEntryLocalIntFlagsPolarityReserved
= 0x2,
226 EfiLegacyMpTableEntryLocalIntFlagsPolarityActiveLow
= 0x3,
227 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_FLAGS_POLARITY
;
230 EfiLegacyMpTableEntryLocalIntFlagsTriggerSpec
= 0x0,
231 EfiLegacyMpTableEntryLocalIntFlagsTriggerEdge
= 0x1,
232 EfiLegacyMpTableEntryLocalIntFlagsTriggerReserved
= 0x2,
233 EfiLegacyMpTableEntryLocalIntFlagsTriggerLevel
= 0x3,
234 } EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT_FLAGS_TRIGGER
;
237 // Entry Type 128: System Address Space Mapping.
239 #define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_SYS_ADDR_SPACE_MAPPING 0x80
246 UINT64 AddressLength
;
247 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING
;
250 EfiLegacyMpTableEntryExtSysAddrSpaceMappingIo
= 0,
251 EfiLegacyMpTableEntryExtSysAddrSpaceMappingMemory
= 1,
252 EfiLegacyMpTableEntryExtSysAddrSpaceMappingPrefetch
= 2,
253 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING_TYPE
;
256 // Entry Type 129: Bus Hierarchy.
258 #define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_BUS_HIERARCHY 0x81
260 UINT8 SubtractiveDecode
: 1;
262 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY_BUSINFO
;
268 EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY_BUSINFO BusInfo
;
273 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_BUS_HIERARCHY
;
276 // Entry Type 130: Compatibility Bus Address Space Modifier.
278 #define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_COMPAT_BUS_ADDR_SPACE_MODIFIER 0x82
282 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER_ADDR_MODE
;
288 EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER_ADDR_MODE AddrMode
;
289 UINT32 PredefinedRangeList
;
290 } EFI_LEGACY_MP_TABLE_ENTRY_EXT_COMPAT_BUS_ADDR_SPACE_MODIFIER
;