]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/PeiMain/PeiMain.c
Merge Temporary Ram support patch.
[mirror_edk2.git] / MdeModulePkg / Core / Pei / PeiMain / PeiMain.c
index 4e2d9b10aa19749ff8dfd9fd3e042d6c80cc643d..a6feaeb91fb8ee64a4ebb4865c26c3f7c7f2a631 100644 (file)
@@ -122,6 +122,7 @@ Returns:
   PEI_CORE_INSTANCE                                     *OldCoreData;\r
   EFI_PEI_CPU_IO_PPI                                    *CpuIo;\r
   EFI_PEI_PCI_CFG2_PPI                                  *PciCfg;\r
+  PEI_CORE_ENTRY_POINT                                  ShadowedPeiCore;\r
 \r
   mTick = 0;\r
   OldCoreData = (PEI_CORE_INSTANCE *) Data;\r
@@ -133,6 +134,16 @@ Returns:
   }\r
 \r
   if (OldCoreData != NULL) {\r
+    ShadowedPeiCore = (PEI_CORE_ENTRY_POINT) (UINTN) OldCoreData->ShadowedPeiCore;\r
+    if (ShadowedPeiCore != NULL) {\r
+      OldCoreData->ShadowedPeiCore = NULL;\r
+      ShadowedPeiCore (\r
+        SecCoreData,\r
+        PpiList,\r
+        OldCoreData\r
+        );\r
+    }\r
+\r
     CopyMem (&PrivateData, OldCoreData, sizeof (PEI_CORE_INSTANCE));\r
     \r
     CpuIo = (VOID*)PrivateData.ServiceTableShadow.CpuIo;\r
@@ -181,8 +192,8 @@ Returns:
       UINTN  StackValue;\r
 \r
       StackValue = INIT_CAR_VALUE;\r
-      for (StackPointer = (UINTN *) OldCoreData->TopOfCarHeap;\r
-           ((UINTN) StackPointer < ((UINTN) OldCoreData->MaxTopOfCarHeap))\r
+      for (StackPointer = (UINTN *) OldCoreData->MaxTopOfCarHeap;\r
+           ((UINTN) StackPointer < ((UINTN) OldCoreData->BottomOfCarHeap + OldCoreData->SizeOfCacheAsRam))\r
            && StackValue == INIT_CAR_VALUE;\r
            StackPointer++) {\r
         StackValue = *StackPointer;\r
@@ -190,7 +201,7 @@ Returns:
       \r
       DEBUG ((EFI_D_INFO, "Total Cache as RAM:    %d bytes.\n", OldCoreData->SizeOfCacheAsRam));\r
       DEBUG ((EFI_D_INFO, "  CAR stack ever used: %d bytes.\n",\r
-        ((UINTN) OldCoreData->MaxTopOfCarHeap - (UINTN) StackPointer)\r
+        ((UINTN) OldCoreData->TopOfCarHeap - (UINTN) StackPointer)\r
         ));\r
       DEBUG ((EFI_D_INFO, "  CAR heap used:       %d bytes.\n",\r
         ((UINTN) OldCoreData->HobList.HandoffInformationTable->EfiFreeMemoryBottom -\r