Hob.Raw = GET_NEXT_HOB (Hob);\r
}\r
}\r
-\r
-/**\r
- Migrate BootLoader data before destroying CAR.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-FspMigrateTemporaryMemory (\r
- VOID\r
- )\r
-{\r
- UINT32 BootLoaderTempRamStart;\r
- UINT32 BootLoaderTempRamEnd;\r
- UINT32 BootLoaderTempRamSize;\r
- UINT32 OffsetGap;\r
- UINT32 FspParamPtr;\r
- VOID *BootLoaderTempRamHob;\r
- UINT32 MemoryInitUpdPtr;\r
- VOID *PlatformDataPtr;\r
-\r
- //\r
- // Get the temporary memory range used by the BootLoader\r
- //\r
- BootLoaderTempRamStart = GetFspCarBase ();\r
- BootLoaderTempRamSize = GetFspCarSize () - PcdGet32(PcdFspTemporaryRamSize);\r
-\r
- BootLoaderTempRamEnd = BootLoaderTempRamStart + BootLoaderTempRamSize;\r
-\r
- //\r
- // Build a Boot Loader Temporary Memory GUID HOB\r
- //\r
- BootLoaderTempRamHob = (VOID *)AllocatePages (EFI_SIZE_TO_PAGES (BootLoaderTempRamSize));\r
- ASSERT(BootLoaderTempRamHob != NULL);\r
-\r
- DEBUG ((DEBUG_INFO, "FSP_BOOT_LOADER_TEMPORARY_MEMORY_HOB\n"));\r
- DEBUG ((DEBUG_INFO, "FspBootLoaderTemporaryMemory Base : %x\n", BootLoaderTempRamStart));\r
- DEBUG ((DEBUG_INFO, "FspBootLoaderTemporaryMemory Size : %x\n", BootLoaderTempRamSize));\r
-\r
- CopyMem (BootLoaderTempRamHob, (VOID *)BootLoaderTempRamStart, BootLoaderTempRamSize);\r
- OffsetGap = (UINT32)BootLoaderTempRamHob - BootLoaderTempRamStart;\r
-\r
- //\r
- // Fix the FspMemoryinit Parameter Pointers to the new location.\r
- //\r
- FspParamPtr = GetFspApiParameter ();\r
- if ((VOID *)FspParamPtr != NULL && FspParamPtr >= BootLoaderTempRamStart && \r
- FspParamPtr < BootLoaderTempRamEnd) {\r
- SetFspApiParameter (FspParamPtr + OffsetGap);\r
- }\r
-\r
- //\r
- // Update UPD pointer in FSP Global Data\r
- //\r
- MemoryInitUpdPtr = (UINT32)((UINT32 *)GetFspMemoryInitUpdDataPointer ());\r
- if (MemoryInitUpdPtr >= BootLoaderTempRamStart && MemoryInitUpdPtr < BootLoaderTempRamEnd) {\r
- SetFspMemoryInitUpdDataPointer ((VOID *)(MemoryInitUpdPtr + OffsetGap));\r
- }\r
-\r
- //\r
- // Update Platform data pointer in FSP Global Data\r
- //\r
- PlatformDataPtr = GetFspPlatformDataPointer ();\r
- if (((UINT32)PlatformDataPtr >= BootLoaderTempRamStart) &&\r
- ((UINT32)PlatformDataPtr < BootLoaderTempRamEnd)) {\r
- SetFspPlatformDataPointer ((UINT8 *)PlatformDataPtr + OffsetGap);\r
- }\r
-}\r