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 /** @file
Copyright (c) 2010, Apple Inc. All rights reserved.<BR> Copyright (c) 2010, Apple Inc. All rights reserved.<BR>
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -601,7 +602,50 @@ BuildFv2Hob (
CopyGuid (&Hob->FileName, FileName); 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. Builds a Capsule Volume HOB.