]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Include/Library/PrePiLib.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmbeddedPkg / Include / Library / PrePiLib.h
index a857308ecec20534dc55853c96332ad074053c57..93a9115eac2d79ffa06b0dd2d67912f6dbcc81b3 100644 (file)
@@ -3,13 +3,7 @@
 \r
   Copyright (c) 2008 - 2009, Apple Inc. 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
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 FfsFindNextVolume (\r
-  IN UINTN                          Instance,\r
-  IN OUT EFI_PEI_FV_HANDLE          *VolumeHandle\r
+  IN UINTN                  Instance,\r
+  IN OUT EFI_PEI_FV_HANDLE  *VolumeHandle\r
   );\r
 \r
-\r
 /**\r
   This service enables discovery of additional firmware files.\r
 \r
@@ -54,17 +47,28 @@ FfsFindNextVolume (
 EFI_STATUS\r
 EFIAPI\r
 FfsFindNextFile (\r
-  IN EFI_FV_FILETYPE            SearchType,\r
-  IN EFI_PEI_FV_HANDLE          VolumeHandle,\r
-  IN OUT EFI_PEI_FILE_HANDLE    *FileHandle\r
+  IN EFI_FV_FILETYPE          SearchType,\r
+  IN EFI_PEI_FV_HANDLE        VolumeHandle,\r
+  IN OUT EFI_PEI_FILE_HANDLE  *FileHandle\r
   );\r
 \r
+/**\r
+ * This is a hook which is used to check if the section is the target one.\r
+ *\r
+ */\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *FFS_CHECK_SECTION_HOOK)(\r
+  IN EFI_COMMON_SECTION_HEADER *Section\r
+  );\r
 \r
 /**\r
   This service enables discovery sections of a given type within a valid FFS file.\r
+  Caller also can provide a SectionCheckHook to do additional checking.\r
 \r
-  @param  SearchType            The value of the section type to find.\r
-  @param  FfsFileHeader         A pointer to the file header that contains the set of sections to\r
+  @param  SectionType           The value of the section type to find.\r
+  @param  SectionCheckHook      A hook which can check if the section is the target one.\r
+  @param  FileHeader            A pointer to the file header that contains the set of sections to\r
                                 be searched.\r
   @param  SectionData           A pointer to the discovered section, if successful.\r
 \r
@@ -74,12 +78,32 @@ FfsFindNextFile (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-FfsFindSectionData (\r
-  IN EFI_SECTION_TYPE           SectionType,\r
-  IN EFI_PEI_FILE_HANDLE        FileHandle,\r
-  OUT VOID                      **SectionData\r
+FfsFindSectionDataWithHook (\r
+  IN EFI_SECTION_TYPE        SectionType,\r
+  IN FFS_CHECK_SECTION_HOOK  SectionCheckHook,\r
+  IN EFI_PEI_FILE_HANDLE     FileHandle,\r
+  OUT VOID                   **SectionData\r
   );\r
 \r
+/**\r
+  This service enables discovery sections of a given type within a valid FFS file.\r
+\r
+  @param  SectionType           The value of the section type to find.\r
+  @param  FileHandle            A pointer to the file header that contains the set of sections to\r
+                                be searched.\r
+  @param  SectionData           A pointer to the discovered section, if successful.\r
+\r
+  @retval EFI_SUCCESS           The section was found.\r
+  @retval EFI_NOT_FOUND         The section was not found.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+FfsFindSectionData (\r
+  IN EFI_SECTION_TYPE     SectionType,\r
+  IN EFI_PEI_FILE_HANDLE  FileHandle,\r
+  OUT VOID                **SectionData\r
+  );\r
 \r
 /**\r
   Find a file in the volume by name\r
@@ -101,13 +125,12 @@ FfsFindSectionData (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-FfsFindByName (\r
-  IN CONST  EFI_GUID            *FileName,\r
-  IN CONST  EFI_PEI_FV_HANDLE   VolumeHandle,\r
-  OUT       EFI_PEI_FILE_HANDLE *FileHandle\r
+FfsFindFileByName (\r
+  IN CONST  EFI_GUID             *FileName,\r
+  IN CONST  EFI_PEI_FV_HANDLE    VolumeHandle,\r
+  OUT       EFI_PEI_FILE_HANDLE  *FileHandle\r
   );\r
 \r
-\r
 /**\r
   Get information about the file by name.\r
 \r
@@ -127,11 +150,10 @@ FfsFindByName (
 EFI_STATUS\r
 EFIAPI\r
 FfsGetFileInfo (\r
-  IN CONST  EFI_PEI_FILE_HANDLE   FileHandle,\r
-  OUT EFI_FV_FILE_INFO            *FileInfo\r
+  IN CONST  EFI_PEI_FILE_HANDLE  FileHandle,\r
+  OUT EFI_FV_FILE_INFO           *FileInfo\r
   );\r
 \r
-\r
 /**\r
   Get Information about the volume by name\r
 \r
@@ -151,12 +173,10 @@ FfsGetFileInfo (
 EFI_STATUS\r
 EFIAPI\r
 FfsGetVolumeInfo (\r
-  IN  EFI_PEI_FV_HANDLE       VolumeHandle,\r
-  OUT EFI_FV_INFO             *VolumeInfo\r
+  IN  EFI_PEI_FV_HANDLE  VolumeHandle,\r
+  OUT EFI_FV_INFO        *VolumeInfo\r
   );\r
 \r
-\r
-\r
 /**\r
   Get Fv image from the FV type file, then add FV & FV2 Hob.\r
 \r
@@ -169,15 +189,14 @@ FfsGetVolumeInfo (
 EFI_STATUS\r
 EFIAPI\r
 FfsProcessFvFile (\r
-  IN  EFI_PEI_FILE_HANDLE   FvFileHandle\r
+  IN  EFI_PEI_FILE_HANDLE  FvFileHandle\r
   );\r
 \r
-\r
 /**\r
   Search through every FV until you find a file of type FileType\r
 \r
   @param FileType        File handle of a Fv type file.\r
-  @param Volumehandle    On succes Volume Handle of the match\r
+  @param Volumehandle    On success Volume Handle of the match\r
   @param FileHandle      On success File Handle of the match\r
 \r
   @retval EFI_NOT_FOUND  FV image can't be found.\r
@@ -187,12 +206,11 @@ FfsProcessFvFile (
 EFI_STATUS\r
 EFIAPI\r
 FfsAnyFvFindFirstFile (\r
-  IN  EFI_FV_FILETYPE       FileType,\r
-  OUT EFI_PEI_FV_HANDLE     *VolumeHandle,\r
-  OUT EFI_PEI_FILE_HANDLE   *FileHandle\r
+  IN  EFI_FV_FILETYPE      FileType,\r
+  OUT EFI_PEI_FV_HANDLE    *VolumeHandle,\r
+  OUT EFI_PEI_FILE_HANDLE  *FileHandle\r
   );\r
 \r
-\r
 /**\r
   Get Fv image from the FV type file, then add FV & FV2 Hob.\r
 \r
@@ -206,10 +224,9 @@ FfsAnyFvFindFirstFile (
 EFI_STATUS\r
 EFIAPI\r
 FfsProcessFvFile (\r
-  IN  EFI_PEI_FILE_HANDLE   FvFileHandle\r
+  IN  EFI_PEI_FILE_HANDLE  FvFileHandle\r
   );\r
 \r
-\r
 /**\r
   This service enables PEIMs to ascertain the present value of the boot mode.\r
 \r
@@ -223,7 +240,6 @@ GetBootMode (
   VOID\r
   );\r
 \r
-\r
 /**\r
   This service enables PEIMs to update the boot mode variable.\r
 \r
@@ -235,7 +251,7 @@ GetBootMode (
 EFI_STATUS\r
 EFIAPI\r
 SetBootMode (\r
-  IN EFI_BOOT_MODE              BootMode\r
+  IN EFI_BOOT_MODE  BootMode\r
   );\r
 \r
 /**\r
@@ -253,7 +269,6 @@ GetHobList (
   VOID\r
   );\r
 \r
-\r
 /**\r
   Updates the pointer to the HOB list.\r
 \r
@@ -263,10 +278,10 @@ GetHobList (
 EFI_STATUS\r
 EFIAPI\r
 SetHobList (\r
-  IN  VOID      *HobList\r
+  IN  VOID  *HobList\r
   );\r
 \r
-EFI_HOB_HANDOFF_INFO_TABLE*\r
+EFI_HOB_HANDOFF_INFO_TABLE *\r
 HobConstructor (\r
   IN VOID   *EfiMemoryBegin,\r
   IN UINTN  EfiMemoryLength,\r
@@ -286,11 +301,10 @@ HobConstructor (
 **/\r
 VOID *\r
 CreateHob (\r
-  IN  UINT16    HobType,\r
-  IN  UINT16    HobLenght\r
+  IN  UINT16  HobType,\r
+  IN  UINT16  HobLenght\r
   );\r
 \r
-\r
 /**\r
   Returns the next instance of a HOB type from the starting HOB.\r
 \r
@@ -310,8 +324,8 @@ CreateHob (
 VOID *\r
 EFIAPI\r
 GetNextHob (\r
-  IN UINT16                 Type,\r
-  IN CONST VOID             *HobStart\r
+  IN UINT16      Type,\r
+  IN CONST VOID  *HobStart\r
   );\r
 \r
 /**\r
@@ -328,7 +342,7 @@ GetNextHob (
 VOID *\r
 EFIAPI\r
 GetFirstHob (\r
-  IN UINT16                 Type\r
+  IN UINT16  Type\r
   );\r
 \r
 /**\r
@@ -353,8 +367,8 @@ GetFirstHob (
 VOID *\r
 EFIAPI\r
 GetNextGuidHob (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN CONST VOID             *HobStart\r
+  IN CONST EFI_GUID  *Guid,\r
+  IN CONST VOID      *HobStart\r
   );\r
 \r
 /**\r
@@ -374,10 +388,9 @@ GetNextGuidHob (
 VOID *\r
 EFIAPI\r
 GetFirstGuidHob (\r
-  IN CONST EFI_GUID         *Guid\r
+  IN CONST EFI_GUID  *Guid\r
   );\r
 \r
-\r
 /**\r
   Builds a HOB for a loaded PE32 module.\r
 \r
@@ -396,10 +409,10 @@ GetFirstGuidHob (
 VOID\r
 EFIAPI\r
 BuildModuleHob (\r
-  IN CONST EFI_GUID         *ModuleName,\r
-  IN EFI_PHYSICAL_ADDRESS   MemoryAllocationModule,\r
-  IN UINT64                 ModuleLength,\r
-  IN EFI_PHYSICAL_ADDRESS   EntryPoint\r
+  IN CONST EFI_GUID        *ModuleName,\r
+  IN EFI_PHYSICAL_ADDRESS  MemoryAllocationModule,\r
+  IN UINT64                ModuleLength,\r
+  IN EFI_PHYSICAL_ADDRESS  EntryPoint\r
   );\r
 \r
 /**\r
@@ -446,8 +459,8 @@ BuildResourceDescriptorHob (
 VOID *\r
 EFIAPI\r
 BuildGuidHob (\r
-  IN CONST EFI_GUID              *Guid,\r
-  IN UINTN                       DataLength\r
+  IN CONST EFI_GUID  *Guid,\r
+  IN UINTN           DataLength\r
   );\r
 \r
 /**\r
@@ -473,9 +486,9 @@ BuildGuidHob (
 VOID *\r
 EFIAPI\r
 BuildGuidDataHob (\r
-  IN CONST EFI_GUID              *Guid,\r
-  IN VOID                        *Data,\r
-  IN UINTN                       DataLength\r
+  IN CONST EFI_GUID  *Guid,\r
+  IN VOID            *Data,\r
+  IN UINTN           DataLength\r
   );\r
 \r
 /**\r
@@ -493,12 +506,12 @@ BuildGuidDataHob (
 VOID\r
 EFIAPI\r
 BuildFvHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
-  Builds a Firmware Volume HOB and a resrouce descriptor hob\r
+  Builds a Firmware Volume HOB and a resource descriptor hob\r
 \r
   This function builds a Firmware Volume HOB.\r
   It can only be invoked during PEI phase;\r
@@ -517,7 +530,6 @@ BuildFvHobs (
   IN EFI_RESOURCE_ATTRIBUTE_TYPE  *ResourceAttribute  OPTIONAL\r
   );\r
 \r
-\r
 /**\r
   Builds a EFI_HOB_TYPE_FV2 HOB.\r
 \r
@@ -535,10 +547,10 @@ BuildFvHobs (
 VOID\r
 EFIAPI\r
 BuildFv2Hob (\r
-  IN          EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN          UINT64                      Length,\r
-  IN CONST    EFI_GUID                    *FvName,\r
-  IN CONST    EFI_GUID                    *FileName\r
+  IN          EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN          UINT64                Length,\r
+  IN CONST    EFI_GUID              *FvName,\r
+  IN CONST    EFI_GUID              *FileName\r
   );\r
 \r
 /**\r
@@ -556,8 +568,8 @@ BuildFv2Hob (
 VOID\r
 EFIAPI\r
 BuildCvHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
@@ -575,8 +587,8 @@ BuildCvHob (
 VOID\r
 EFIAPI\r
 BuildCpuHob (\r
-  IN UINT8                       SizeOfMemorySpace,\r
-  IN UINT8                       SizeOfIoSpace\r
+  IN UINT8  SizeOfMemorySpace,\r
+  IN UINT8  SizeOfIoSpace\r
   );\r
 \r
 /**\r
@@ -594,8 +606,8 @@ BuildCpuHob (
 VOID\r
 EFIAPI\r
 BuildStackHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
@@ -607,11 +619,10 @@ BuildStackHob (
 **/\r
 VOID\r
 UpdateStackHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
-\r
 /**\r
   Builds a HOB for the BSP store.\r
 \r
@@ -628,9 +639,9 @@ UpdateStackHob (
 VOID\r
 EFIAPI\r
 BuildBspStoreHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN EFI_MEMORY_TYPE             MemoryType\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length,\r
+  IN EFI_MEMORY_TYPE       MemoryType\r
   );\r
 \r
 /**\r
@@ -649,18 +660,17 @@ BuildBspStoreHob (
 VOID\r
 EFIAPI\r
 BuildMemoryAllocationHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN EFI_MEMORY_TYPE             MemoryType\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length,\r
+  IN EFI_MEMORY_TYPE       MemoryType\r
   );\r
 \r
-\r
 VOID\r
 EFIAPI\r
 BuildExtractSectionHob (\r
-  IN  EFI_GUID                                  *Guid,\r
-  IN  EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER   SectionGetInfo,\r
-  IN  EXTRACT_GUIDED_SECTION_DECODE_HANDLER     SectionExtraction\r
+  IN  EFI_GUID                                 *Guid,\r
+  IN  EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER  SectionGetInfo,\r
+  IN  EXTRACT_GUIDED_SECTION_DECODE_HANDLER    SectionExtraction\r
   );\r
 \r
 VOID\r
@@ -669,7 +679,6 @@ BuildPeCoffLoaderHob (
   VOID\r
   );\r
 \r
-\r
 /**\r
   Allocates one or more 4KB pages of type EfiBootServicesData.\r
 \r
@@ -686,7 +695,26 @@ BuildPeCoffLoaderHob (
 VOID *\r
 EFIAPI\r
 AllocatePages (\r
-  IN UINTN            Pages\r
+  IN UINTN  Pages\r
+  );\r
+\r
+/**\r
+  Allocates one or more 4KB pages of type EfiRuntimeServicesData.\r
+\r
+  Allocates the number of 4KB pages of type EfiRuntimeServicesData and returns a pointer to the\r
+  allocated buffer.  The buffer returned is aligned on a 4KB boundary.  If Pages is 0, then NULL\r
+  is returned.  If there is not enough memory remaining to satisfy the request, then NULL is\r
+  returned.\r
+\r
+  @param  Pages                 The number of 4 KB pages to allocate.\r
+\r
+  @return A pointer to the allocated buffer or NULL if allocation fails.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+AllocateRuntimePages (\r
+  IN UINTN  Pages\r
   );\r
 \r
 /**\r
@@ -707,7 +735,6 @@ AllocatePool (
   IN UINTN  AllocationSize\r
   );\r
 \r
-\r
 /**\r
   Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.\r
 \r
@@ -731,14 +758,13 @@ AllocateAlignedPages (
   IN UINTN  Alignment\r
   );\r
 \r
-\r
 EFI_STATUS\r
 EFIAPI\r
 LoadPeCoffImage (\r
-  IN  VOID                                      *PeCoffImage,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *ImageAddress,\r
-  OUT UINT64                                    *ImageSize,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *EntryPoint\r
+  IN  VOID                  *PeCoffImage,\r
+  OUT EFI_PHYSICAL_ADDRESS  *ImageAddress,\r
+  OUT UINT64                *ImageSize,\r
+  OUT EFI_PHYSICAL_ADDRESS  *EntryPoint\r
   );\r
 \r
 EFI_STATUS\r
@@ -751,7 +777,7 @@ LoadDxeCoreFromFfsFile (
 EFI_STATUS\r
 EFIAPI\r
 LoadDxeCoreFromFv (\r
-  IN UINTN  *FvInstance,   OPTIONAL\r
+  IN UINTN  *FvInstance    OPTIONAL,\r
   IN UINTN  StackSize\r
   );\r
 \r
@@ -761,11 +787,4 @@ DecompressFirstFv (
   VOID\r
   );\r
 \r
-VOID\r
-EFIAPI\r
-AddDxeCoreReportStatusCodeCallback (\r
-  VOID\r
-  );\r
-\r
-\r
 #endif\r