- CPU_MP_DATA *CpuMpData;\r
-\r
- CpuMpData = GetCpuMpDataFromGuidedHob ();\r
- ASSERT (CpuMpData != NULL);\r
+ CPU_MP_DATA *CpuMpData;\r
+ MSR_IA32_APIC_BASE_REGISTER ApicBaseMsr;\r
+ IA32_DESCRIPTOR Idtr;\r
+\r
+ ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
+ if (ApicBaseMsr.Bits.BSP == 1) {\r
+ CpuMpData = GetCpuMpDataFromGuidedHob ();\r
+ ASSERT (CpuMpData != NULL);\r
+ } else {\r
+ AsmReadIdtr (&Idtr);\r
+ CpuMpData = (CPU_MP_DATA *) (Idtr.Base + Idtr.Limit + 1);\r
+ }\r