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
}\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
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
\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