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