#include <Ppi/SecPlatformInformation2.h>\r
#include <Ppi/EndOfPeiPhase.h>\r
\r
+#include <Register/Cpuid.h>\r
#include <Register/LocalApic.h>\r
\r
#include <Library/BaseLib.h>\r
\r
#pragma pack()\r
\r
+typedef struct {\r
+ UINTN Cr0;\r
+ UINTN Cr3;\r
+ UINTN Cr4;\r
+ UINTN Dr0;\r
+ UINTN Dr1;\r
+ UINTN Dr2;\r
+ UINTN Dr3;\r
+ UINTN Dr6;\r
+ UINTN Dr7;\r
+} CPU_VOLATILE_REGISTERS;\r
+\r
typedef struct {\r
UINT32 ApicId;\r
EFI_HEALTH_FLAGS Health;\r
CPU_STATE State;\r
BOOLEAN CpuHealthy;\r
+ CPU_VOLATILE_REGISTERS VolatileRegisters;\r
} PEI_CPU_DATA;\r
\r
//\r
// PEI CPU MP Data save in memory\r
//\r
struct _PEI_CPU_MP_DATA {\r
+ SPIN_LOCK MpLock;\r
UINT32 CpuCount;\r
UINT32 BspNumber;\r
UINTN Buffer;\r
volatile UINT32 FinishedCount;\r
BOOLEAN EndOfPeiFlag;\r
BOOLEAN InitFlag;\r
+ BOOLEAN X2ApicEnable;\r
CPU_EXCHANGE_ROLE_INFO BSPInfo;\r
CPU_EXCHANGE_ROLE_INFO APInfo;\r
MTRR_SETTINGS MtrrTable;\r