Use global variable gInMemory in place of gInMemoryGuid ppi in DxeIplX64 module to...
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 21 Nov 2006 03:01:52 +0000 (03:01 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 21 Nov 2006 03:01:52 +0000 (03:01 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1987 6f19259b-4bc3-4df7-8a09-765794883524

EdkModulePkg/Core/DxeIplX64Peim/DxeIplX64.msa
EdkModulePkg/Core/DxeIplX64Peim/DxeLoadX64.c

index d6e1057..d9fcb9d 100644 (file)
     <Ppi Usage="SOMETIMES_CONSUMED">\r
       <PpiCName>gEfiPeiSecurityPpiGuid</PpiCName>\r
     </Ppi>\r
-    <Ppi Usage="PRIVATE">\r
-      <PpiCName>gPeiInMemoryGuid</PpiCName>\r
-    </Ppi>\r
   </PPIs>\r
   <Guids>\r
     <GuidCNames Usage="ALWAYS_CONSUMED">\r
index 990eec1..57ffb28 100644 (file)
@@ -52,12 +52,6 @@ static EFI_PEI_PPI_DESCRIPTOR     mPpiList = {
   &mDxeIplPpi\r
 };\r
 \r
-static EFI_PEI_PPI_DESCRIPTOR     mPpiPeiInMemory = {\r
-  (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
-  &gPeiInMemoryGuid,\r
-  NULL\r
-};\r
-\r
 static EFI_PEI_PPI_DESCRIPTOR     mPpiSignal = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiEndOfPeiSignalPpiGuid,\r
@@ -127,14 +121,7 @@ Returns:
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  Status = PeiServicesLocatePpi (\r
-             &gPeiInMemoryGuid,\r
-             0,\r
-             NULL,\r
-             NULL\r
-             );\r
-\r
-  if (EFI_ERROR (Status) && (BootMode != BOOT_ON_S3_RESUME)) {   \r
+  if (!gInMemory && (BootMode != BOOT_ON_S3_RESUME)) {   \r
     //\r
     // The DxeIpl has not yet been shadowed\r
     //\r
@@ -150,10 +137,6 @@ Returns:
 \r
   } else {\r
     if (BootMode != BOOT_ON_S3_RESUME) {\r
-    //\r
-    // The DxeIpl has been shadowed\r
-    //\r
-    gInMemory = TRUE;\r
 \r
     //\r
     // Install LoadFile PPI\r
@@ -167,7 +150,7 @@ Returns:
     //\r
     // Install DxeIpl PPI\r
     //\r
-    PeiServicesInstallPpi (&mPpiList);\r
+    Status = PeiServicesInstallPpi (&mPpiList);\r
 \r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
@@ -620,14 +603,9 @@ Returns:
  \r
   if (Status == EFI_SUCCESS) {\r
     //\r
-    // Install PeiInMemory to indicate the Dxeipl is shadowed\r
+    // Set gInMemory global variable to TRUE to indicate the dxeipl is shadowed.\r
     //\r
-    Status = PeiServicesInstallPpi (&mPpiPeiInMemory);\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
+    *(BOOLEAN *) ((UINTN) &gInMemory + (UINTN) DxeIplEntryPoint - (UINTN) _ModuleEntryPoint) = TRUE;\r
     Status = ((EFI_PEIM_ENTRY_POINT) (UINTN) DxeIplEntryPoint) (DxeIplFileHeader, GetPeiServicesTablePointer());\r
   }\r
 \r