\r
EFI_STATUS\r
GetFvbHeader (\r
- IN OUT VOID **HobList,\r
+ IN OUT EFI_PEI_HOB_POINTERS *HobList,\r
OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader,\r
OUT EFI_PHYSICAL_ADDRESS *BaseAddress OPTIONAL,\r
OUT UINT32 *VolumeId OPTIONAL,\r
)\r
{\r
EFI_STATUS Status;\r
- VOID *Buffer;\r
EFI_FLASH_MAP_FS_ENTRY_DATA *FlashMapEntry;\r
EFI_FLASH_SUBAREA_ENTRY *FlashMapSubEntry;\r
\r
*FwVolHeader = NULL;\r
TRY_ASSIGN (WriteBack, FALSE);\r
\r
- Buffer = GetNextGuidHob (&gEfiFlashMapHobGuid, HobList);\r
- if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_INFO, "Hob start is 0x%x\n", (UINTN)(*HobList).Raw));\r
+ (*HobList).Raw = GetNextGuidHob (&gEfiFlashMapHobGuid, (*HobList).Raw);\r
+ if ((*HobList).Raw == NULL) {\r
return EFI_NOT_FOUND;\r
}\r
\r
- FlashMapEntry = (EFI_FLASH_MAP_FS_ENTRY_DATA *) Buffer;\r
+ FlashMapEntry = (EFI_FLASH_MAP_FS_ENTRY_DATA *) GET_GUID_HOB_DATA ((*HobList).Guid);\r
FlashMapSubEntry = &FlashMapEntry->Entries[0];\r
+ \r
//\r
// Check if it is a "FVB" area\r
//\r
EFI_FW_VOL_INSTANCE *FwhInstance;\r
EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
VOID *HobList;\r
- VOID *FirmwareVolumeHobList;\r
+ EFI_PEI_HOB_POINTERS FirmwareVolumeHobList;\r
UINT32 BufferSize;\r
EFI_FV_BLOCK_MAP_ENTRY *PtrBlockMapEntry;\r
UINTN LbaAddress;\r
// Calculate the total size for all firmware volume block instances\r
//\r
BufferSize = 0;\r
- FirmwareVolumeHobList = HobList;\r
+ FirmwareVolumeHobList.Raw = GetHobList();\r
do {\r
Status = GetFvbHeader (&FirmwareVolumeHobList, &FwVolHeader, NULL, NULL, NULL, NULL, NULL, NULL);\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
+ FirmwareVolumeHobList.Raw = GET_NEXT_HOB (FirmwareVolumeHobList);\r
\r
if (FwVolHeader) {\r
BufferSize += (FwVolHeader->HeaderLength + sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER));\r
FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];\r
mFvbModuleGlobal->FvInstance[FVB_VIRTUAL] = FwhInstance;\r
\r
- mFvbModuleGlobal->NumFv = 0;\r
- FirmwareVolumeHobList = HobList;\r
- MaxLbaSize = 0;\r
+ mFvbModuleGlobal->NumFv = 0;\r
+ FirmwareVolumeHobList.Raw = GetHobList();\r
+ MaxLbaSize = 0;\r
\r
//\r
// Fill in the private data of each firmware volume block instance\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
+ FirmwareVolumeHobList.Raw = GET_NEXT_HOB (FirmwareVolumeHobList);\r
\r
if (!FwVolHeader) {\r
continue;\r