diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c index ca75a9493d..6c6f07c353 100644 --- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c +++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c @@ -37,19 +37,19 @@ GetPeiServicesTablePointer ( VOID ) { - EFI_PEI_SERVICES **PeiServices; -#if (PI_SPECIFICATION_VERSION >= 0x00010000) IA32_DESCRIPTOR Idtr; -#endif + EFI_PEI_SERVICES **PeiServices; -#if (PI_SPECIFICATION_VERSION < 0x00010000) - PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadMm7 (); -#else AsmReadIdtr (&Idtr); PeiServices = (EFI_PEI_SERVICES **)(UINTN)(*(UINTN*)(Idtr.Base - sizeof (UINTN))); -#endif - ASSERT (PeiServices != NULL); - return PeiServices; + + if ((*PeiServices)->Hdr.Signature == PEI_SERVICES_SIGNATURE) { + return PeiServices; + } else { + PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadMm7 (); + ASSERT (PeiServices != NULL); + return PeiServices; + } } /**