//\r
typedef struct {\r
UINT8 *RendezvousFunnelAddress;\r
- UINTN PModeEntryOffset;\r
- UINTN LModeEntryOffset;\r
+ UINTN ModeEntryOffset;\r
UINTN RendezvousFunnelSize;\r
} MP_ASSEMBLY_ADDRESS_MAP;\r
\r
\r
#pragma pack(1)\r
\r
-typedef union {\r
- struct {\r
- UINT32 LimitLow : 16;\r
- UINT32 BaseLow : 16;\r
- UINT32 BaseMid : 8;\r
- UINT32 Type : 4;\r
- UINT32 System : 1;\r
- UINT32 Dpl : 2;\r
- UINT32 Present : 1;\r
- UINT32 LimitHigh : 4;\r
- UINT32 Software : 1;\r
- UINT32 Reserved : 1;\r
- UINT32 DefaultSize : 1;\r
- UINT32 Granularity : 1;\r
- UINT32 BaseHigh : 8;\r
- } Bits;\r
- UINT64 Uint64;\r
-} IA32_GDT;\r
-\r
//\r
// MP CPU exchange information for AP reset code\r
// This structure is required to be packed because fixed field offsets\r
IA32_DESCRIPTOR GdtrProfile;\r
IA32_DESCRIPTOR IdtrProfile;\r
UINTN BufferStart;\r
- UINTN PmodeOffset;\r
+ UINTN ModeOffset;\r
UINTN NumApsExecuting;\r
- UINTN LmodeOffset;\r
+ UINTN CodeSegment;\r
+ UINTN DataSegment;\r
UINTN Cr3;\r
PEI_CPU_MP_DATA *PeiCpuMpData;\r
} MP_CPU_EXCHANGE_INFO;\r
OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
);\r
\r
+/**\r
+ Detect whether specified processor can find matching microcode patch and load it.\r
+\r
+ @param PeiCpuMpData Pointer to PEI CPU MP Data\r
+**/\r
+VOID\r
+MicrocodeDetect (\r
+ IN PEI_CPU_MP_DATA *PeiCpuMpData\r
+ );\r
+\r
#endif\r