VOID\r
)\r
{\r
- EFI_PEI_SERVICES **PeiServices;\r
-#if (PI_SPECIFICATION_VERSION >= 0x00010000)\r
IA32_DESCRIPTOR Idtr;\r
-#endif\r
+ EFI_PEI_SERVICES **PeiServices;\r
\r
-#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
- PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadMm7 ();\r
-#else\r
AsmReadIdtr (&Idtr);\r
PeiServices = (EFI_PEI_SERVICES **)(UINTN)(*(UINTN*)(Idtr.Base - sizeof (UINTN)));\r
-#endif\r
- ASSERT (PeiServices != NULL);\r
- return PeiServices;\r
+ \r
+ if ((*PeiServices)->Hdr.Signature == PEI_SERVICES_SIGNATURE) {\r
+ return PeiServices;\r
+ } else {\r
+ PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadMm7 ();\r
+ ASSERT (PeiServices != NULL);\r
+ return PeiServices;\r
+ }\r
}\r
\r
/**\r