EmbeddedPkg PrePiHobLib: Implement BuildFv3Hob

Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
Star Zeng 2017-10-05 14:02:51 +08:00
parent 2331cab7d4
commit e39e40caa0
1 changed files with 44 additions and 0 deletions

View File

@ -1,6 +1,7 @@
/** @file
Copyright (c) 2010, Apple Inc. All rights reserved.<BR>
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@ -601,7 +602,50 @@ BuildFv2Hob (
CopyGuid (&Hob->FileName, FileName);
}
/**
Builds a EFI_HOB_TYPE_FV3 HOB.
This function builds a EFI_HOB_TYPE_FV3 HOB.
It can only be invoked during PEI phase;
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
If there is no additional space for HOB creation, then ASSERT().
@param BaseAddress The base address of the Firmware Volume.
@param Length The size of the Firmware Volume in bytes.
@param AuthenticationStatus The authentication status.
@param ExtractedFv TRUE if the FV was extracted as a file within
another firmware volume. FALSE otherwise.
@param FvName The name of the Firmware Volume.
Valid only if IsExtractedFv is TRUE.
@param FileName The name of the file.
Valid only if IsExtractedFv is TRUE.
**/
VOID
EFIAPI
BuildFv3Hob (
IN EFI_PHYSICAL_ADDRESS BaseAddress,
IN UINT64 Length,
IN UINT32 AuthenticationStatus,
IN BOOLEAN ExtractedFv,
IN CONST EFI_GUID *FvName, OPTIONAL
IN CONST EFI_GUID *FileName OPTIONAL
)
{
EFI_HOB_FIRMWARE_VOLUME3 *Hob;
Hob = CreateHob (EFI_HOB_TYPE_FV3, sizeof (EFI_HOB_FIRMWARE_VOLUME3));
Hob->BaseAddress = BaseAddress;
Hob->Length = Length;
Hob->AuthenticationStatus = AuthenticationStatus;
Hob->ExtractedFv = ExtractedFv;
if (ExtractedFv) {
CopyGuid (&Hob->FvName, FvName);
CopyGuid (&Hob->FileName, FileName);
}
}
/**
Builds a Capsule Volume HOB.