VOID\r
InitializeMemoryServices (\r
IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor,\r
+ IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,\r
IN PEI_CORE_INSTANCE *OldCoreData\r
)\r
/*++\r
Arguments:\r
\r
PeiServices - The PEI core services table.\r
- PeiStartupDescriptor - Information and services provided by SEC phase.\r
+ SecCoreData - Points to a data structure containing information about the PEI core's operating\r
+ environment, such as the size and location of temporary RAM, the stack location and\r
+ the BFV location.\r
+\r
OldCoreData - Pointer to the PEI Core data.\r
NULL if being run in non-permament memory mode.\r
\r
--*/\r
{\r
PEI_CORE_INSTANCE *PrivateData;\r
- UINT64 SizeOfCarHeap;\r
\r
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);\r
PrivateData->SwitchStackSignal = FALSE;\r
\r
PrivateData->PeiMemoryInstalled = FALSE;\r
\r
- PrivateData->BottomOfCarHeap = (VOID *) (((UINTN)(VOID *)(&PrivateData))\r
- & (~((PeiStartupDescriptor->SizeOfCacheAsRam) - 1))); \r
- PrivateData->TopOfCarHeap = (VOID *)((UINTN)(PrivateData->BottomOfCarHeap) + PeiStartupDescriptor->SizeOfCacheAsRam);\r
- //\r
- // SizeOfCarHeap is 1/2 (arbitrary) of CacheAsRam Size.\r
- //\r
- SizeOfCarHeap = (UINT64) PeiStartupDescriptor->SizeOfCacheAsRam;\r
- SizeOfCarHeap = RShiftU64 (SizeOfCarHeap, 1);\r
+ PrivateData->BottomOfCarHeap = SecCoreData->PeiTemporaryRamBase; \r
+ PrivateData->TopOfCarHeap = (VOID *)((UINTN)(PrivateData->BottomOfCarHeap) + SecCoreData->PeiTemporaryRamSize);\r
\r
DEBUG_CODE_BEGIN ();\r
- PrivateData->SizeOfCacheAsRam = PeiStartupDescriptor->SizeOfCacheAsRam;\r
- PrivateData->MaxTopOfCarHeap = (VOID *) ((UINTN) PrivateData->BottomOfCarHeap + (UINTN) SizeOfCarHeap);\r
+ PrivateData->SizeOfCacheAsRam = SecCoreData->PeiTemporaryRamSize + SecCoreData->StackSize;\r
+ PrivateData->MaxTopOfCarHeap = (VOID *) ((UINTN) PrivateData->BottomOfCarHeap + (UINTN) PrivateData->SizeOfCacheAsRam);\r
DEBUG_CODE_END ();\r
\r
PrivateData->HobList.Raw = PrivateData->BottomOfCarHeap;\r
PeiCoreBuildHobHandoffInfoTable (\r
BOOT_WITH_FULL_CONFIGURATION,\r
(EFI_PHYSICAL_ADDRESS) (UINTN) PrivateData->BottomOfCarHeap,\r
- (UINTN) SizeOfCarHeap\r
+ (UINTN) SecCoreData->PeiTemporaryRamSize\r
);\r
//\r
// Copy PeiServices from ROM to Cache in PrivateData\r