]> git.proxmox.com Git - mirror_edk2.git/commitdiff
EmbeddedPkg PrePiHobLib: Implement BuildFv3Hob
authorStar Zeng <star.zeng@intel.com>
Thu, 5 Oct 2017 06:02:51 +0000 (14:02 +0800)
committerStar Zeng <star.zeng@intel.com>
Tue, 10 Oct 2017 12:54:47 +0000 (20:54 +0800)
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>
EmbeddedPkg/Library/PrePiHobLib/Hob.c

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