12#ifndef _LEGACY_BIOS_MPTABLE_H_
13#define _LEGACY_BIOS_MPTABLE_H_
15#define EFI_LEGACY_MP_TABLE_REV_1_4 0x04
22#define EFI_LEGACY_MP_TABLE_FLOATING_POINTER_SIGNATURE SIGNATURE_32 ('_', 'M', 'P', '_')
25 UINT32 MutipleClk : 1;
27 UINT32 Reserved2 : 24;
32 UINT32 PhysicalAddress;
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;
64#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_PROCESSOR 0x00
84 UINT32 Reserved2 : 22;
101#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_BUS 0x01
108#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUS "CBUS "
109#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_CBUSII "CBUSII"
110#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_EISA "EISA "
111#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_FUTURE "FUTURE"
112#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_INTERN "INTERN"
113#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_ISA "ISA "
114#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBI "MBI "
115#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MBII "MBII "
116#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MCA "MCA "
117#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPI "MPI "
118#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_MPSA "MPSA "
119#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_NUBUS "NUBUS "
120#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCI "PCI "
121#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_PCMCIA "PCMCIA"
122#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_TC "TC "
123#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VL "VL "
124#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_VME "VME "
125#define EFI_LEGACY_MP_TABLE_ENTRY_BUS_STRING_XPRESS "XPRESS"
129#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IOAPIC 0x02
146#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_IO_INT 0x03
150 UINT16 Reserved : 12;
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;
198#define EFI_LEGACY_MP_TABLE_ENTRY_TYPE_LOCAL_INT 0x04
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;
233#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_SYS_ADDR_SPACE_MAPPING 0x80
240 UINT64 AddressLength;
244 EfiLegacyMpTableEntryExtSysAddrSpaceMappingIo = 0,
245 EfiLegacyMpTableEntryExtSysAddrSpaceMappingMemory = 1,
246 EfiLegacyMpTableEntryExtSysAddrSpaceMappingPrefetch = 2,
247} EFI_LEGACY_MP_TABLE_ENTRY_EXT_SYS_ADDR_SPACE_MAPPING_TYPE;
252#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_BUS_HIERARCHY 0x81
254 UINT8 SubtractiveDecode : 1;
272#define EFI_LEGACY_MP_TABLE_ENTRY_EXT_TYPE_COMPAT_BUS_ADDR_SPACE_MODIFIER 0x82
283 UINT32 PredefinedRangeList;