]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / Library / PeiServicesTablePointerLibMm7 / PeiServicesTablePointer.c
index f91a2f582a1814e11044998771af782cef7a7267..ca75a9493d10bf0707ba751fb1a2a41ea5df0d92 100644 (file)
@@ -38,8 +38,16 @@ GetPeiServicesTablePointer (
   )\r
 {\r
   EFI_PEI_SERVICES  **PeiServices;\r
+#if (PI_SPECIFICATION_VERSION >= 0x00010000)\r
+  IA32_DESCRIPTOR   Idtr;\r
+#endif\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
@@ -63,6 +71,8 @@ PeiServicesTablePointerLibConstructor (
   IN EFI_PEI_SERVICES     **PeiServices\r
   )\r
 {\r
+#if (PI_SPECIFICATION_VERSION < 0x00010000)\r
   AsmWriteMm7 ((UINT64)(UINTN)PeiServices);\r
+#endif\r
   return EFI_SUCCESS;\r
 }\r