]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/Memory/MemoryServices.c
PI Enable:
[mirror_edk2.git] / MdeModulePkg / Core / Pei / Memory / MemoryServices.c
index 431084f83bcd3b310c638c1d059ae41020b8421d..49e9f7f5528154c6417d4e1464d11ef79185b1ab 100644 (file)
@@ -24,7 +24,7 @@ Abstract:
 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
@@ -36,7 +36,10 @@ Routine Description:
 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
@@ -47,7 +50,6 @@ Returns:
 --*/\r
 {\r
   PEI_CORE_INSTANCE                    *PrivateData;\r
-  UINT64                               SizeOfCarHeap;\r
 \r
   PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);\r
   PrivateData->SwitchStackSignal = FALSE;\r
@@ -56,18 +58,12 @@ Returns:
 \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
@@ -75,7 +71,7 @@ Returns:
     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