]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFspPkg/Library/BaseFspPlatformLib/FspPlatformMemory.c
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / IntelFspPkg / Library / BaseFspPlatformLib / FspPlatformMemory.c
index 97cae9ad9dbb271d615456c4ea7ab308a6f4c1d3..ed5db933f11f79ab8279aa86d2516d53404ff8a8 100644 (file)
@@ -86,7 +86,9 @@ FspMigrateTemporaryMemory (
   FSP_INIT_PARAMS           *FspInitParams;\r
   UINT32                    *NewStackTop;\r
   VOID                      *BootLoaderTempRamHob;\r
-  VOID                      *UpdDataRgnPtr;\r
+  UINT32                    UpdDataRgnPtr;\r
+  UINT32                    MemoryInitUpdPtr;\r
+  UINT32                    SiliconInitUpdPtr;\r
   VOID                      *PlatformDataPtr;\r
   UINT8                      ApiMode;\r
     \r
@@ -105,7 +107,7 @@ FspMigrateTemporaryMemory (
   if (ApiMode == 0) {\r
     BootLoaderTempRamHob = BuildGuidHob (&gFspBootLoaderTemporaryMemoryGuid, BootLoaderTempRamSize);\r
   } else {\r
-    BootLoaderTempRamHob = (VOID *)AllocatePool (BootLoaderTempRamSize);\r
+    BootLoaderTempRamHob = (VOID *)AllocatePages (EFI_SIZE_TO_PAGES (BootLoaderTempRamSize));\r
   }\r
   ASSERT(BootLoaderTempRamHob != NULL);\r
 \r
@@ -150,9 +152,20 @@ FspMigrateTemporaryMemory (
   //\r
   // Update UPD pointer in FSP Global Data\r
   //\r
-  UpdDataRgnPtr = ((FSP_INIT_RT_COMMON_BUFFER *)FspInitParams->RtBufferPtr)->UpdDataRgnPtr;\r
-  if (UpdDataRgnPtr != NULL) {\r
-    SetFspUpdDataPointer (UpdDataRgnPtr);\r
+  if (ApiMode == 0) {\r
+    UpdDataRgnPtr = (UINT32)((UINT32 *)GetFspUpdDataPointer ());\r
+    if (UpdDataRgnPtr >= BootLoaderTempRamStart && UpdDataRgnPtr < BootLoaderTempRamEnd) {\r
+      MemoryInitUpdPtr = (UINT32)((UINT32 *)GetFspMemoryInitUpdDataPointer ());\r
+      SiliconInitUpdPtr = (UINT32)((UINT32 *)GetFspSiliconInitUpdDataPointer ());\r
+      SetFspUpdDataPointer ((VOID *)(UpdDataRgnPtr + OffsetGap));\r
+      SetFspMemoryInitUpdDataPointer ((VOID *)(MemoryInitUpdPtr + OffsetGap));\r
+      SetFspSiliconInitUpdDataPointer ((VOID *)(SiliconInitUpdPtr + OffsetGap));\r
+    }\r
+  } else {\r
+    MemoryInitUpdPtr = (UINT32)((UINT32 *)GetFspMemoryInitUpdDataPointer ());\r
+    if (MemoryInitUpdPtr >= BootLoaderTempRamStart && MemoryInitUpdPtr < BootLoaderTempRamEnd) {\r
+      SetFspMemoryInitUpdDataPointer ((VOID *)(MemoryInitUpdPtr + OffsetGap));\r
+    }\r
   }\r
 \r
   //\r