]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFspPkg/FspDxeIpl/DxeIpl.h
Add IntelFspPkg to support create FSP bin based on EDKII.
[mirror_edk2.git] / IntelFspPkg / FspDxeIpl / DxeIpl.h
diff --git a/IntelFspPkg/FspDxeIpl/DxeIpl.h b/IntelFspPkg/FspDxeIpl/DxeIpl.h
new file mode 100644 (file)
index 0000000..0aded72
--- /dev/null
@@ -0,0 +1,192 @@
+/** @file\r
+\r
+  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>\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
+\r
+**/\r
+\r
+#ifndef __PEI_DXEIPL_H__\r
+#define __PEI_DXEIPL_H__\r
+\r
+#include <PiPei.h>\r
+#include <Ppi/DxeIpl.h>\r
+#include <Ppi/EndOfPeiPhase.h>\r
+#include <Ppi/MemoryDiscovered.h>\r
+#include <Ppi/Decompress.h>\r
+#include <Ppi/FirmwareVolumeInfo.h>\r
+#include <Ppi/GuidedSectionExtraction.h>\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/PeimEntryPoint.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/HobLib.h>\r
+#include <Library/PeiServicesLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
+#include <Library/UefiDecompressLib.h>\r
+#include <Library/ExtractGuidedSectionLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/PcdLib.h>\r
+#include <Library/FspSwitchStackLib.h>\r
+#include <Library/FspCommonLib.h>\r
+#include <Library/FspPlatformLib.h>\r
+\r
+/**\r
+   Main entry point to last PEIM.\r
+\r
+   This function finds DXE Core in the firmware volume and transfer the control to\r
+   DXE core.\r
+\r
+   @param[in] This          Entry point for DXE IPL PPI.\r
+   @param[in] PeiServices   General purpose services available to every PEIM.\r
+   @param[in] HobList       Address to the Pei HOB list.\r
+\r
+   @return EFI_SUCCESS              DXE core was successfully loaded.\r
+   @return EFI_OUT_OF_RESOURCES     There are not enough resources to load DXE core.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DxeLoadCore (\r
+  IN CONST EFI_DXE_IPL_PPI *This,\r
+  IN EFI_PEI_SERVICES      **PeiServices,\r
+  IN EFI_PEI_HOB_POINTERS  HobList\r
+  );\r
+\r
+\r
+\r
+/**\r
+   Transfers control to DxeCore.\r
+\r
+   This function performs a CPU architecture specific operations to execute\r
+   the entry point of DxeCore with the parameters of HobList.\r
+   It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase.\r
+\r
+   @param[in] DxeCoreEntryPoint         The entry point of DxeCore.\r
+   @param[in] HobList                   The start of HobList passed to DxeCore.\r
+\r
+**/\r
+VOID\r
+HandOffToDxeCore (\r
+  IN EFI_PHYSICAL_ADDRESS   DxeCoreEntryPoint,\r
+  IN EFI_PEI_HOB_POINTERS   HobList\r
+  );\r
+\r
+\r
+\r
+/**\r
+   Updates the Stack HOB passed to DXE phase.\r
+\r
+   This function traverses the whole HOB list and update the stack HOB to\r
+   reflect the real stack that is used by DXE core.\r
+\r
+   @param[in] BaseAddress           The lower address of stack used by DxeCore.\r
+   @param[in] Length                The length of stack used by DxeCore.\r
+\r
+**/\r
+VOID\r
+UpdateStackHob (\r
+  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
+  IN UINT64                      Length\r
+  );\r
+\r
+/**\r
+  The ExtractSection() function processes the input section and\r
+  returns a pointer to the section contents. If the section being\r
+  extracted does not require processing (if the section\r
+  GuidedSectionHeader.Attributes has the\r
+  EFI_GUIDED_SECTION_PROCESSING_REQUIRED field cleared), then\r
+  OutputBuffer is just updated to point to the start of the\r
+  section's contents. Otherwise, *Buffer must be allocated\r
+  from PEI permanent memory.\r
+\r
+  @param[in]  This                   Indicates the\r
+                                     EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI instance.\r
+                                     Buffer containing the input GUIDed section to be\r
+                                     processed. OutputBuffer OutputBuffer is\r
+                                     allocated from PEI permanent memory and contains\r
+                                     the new section stream.\r
+  @param[in]  InputSection           A pointer to the input buffer, which contains\r
+                                     the input section to be processed.\r
+  @param[out] OutputBuffer           A pointer to a caller-allocated buffer, whose\r
+                                     size is specified by the contents of OutputSize.\r
+  @param[out] OutputSize             A pointer to a caller-allocated\r
+                                     UINTN in which the size of *OutputBuffer\r
+                                     allocation is stored. If the function\r
+                                     returns anything other than EFI_SUCCESS,\r
+                                     the value of OutputSize is undefined.\r
+  @param[out] AuthenticationStatus   A pointer to a caller-allocated\r
+                                     UINT32 that indicates the\r
+                                     authentication status of the\r
+                                     output buffer. If the input\r
+                                     section's GuidedSectionHeader.\r
+                                     Attributes field has the\r
+                                     EFI_GUIDED_SECTION_AUTH_STATUS_VALID\r
+                                     bit as clear,\r
+                                     AuthenticationStatus must return\r
+                                     zero. These bits reflect the\r
+                                     status of the extraction\r
+                                     operation. If the function\r
+                                     returns anything other than\r
+                                     EFI_SUCCESS, the value of\r
+                                     AuthenticationStatus is\r
+                                     undefined.\r
+\r
+  @retval EFI_SUCCESS           The InputSection was\r
+                                successfully processed and the\r
+                                section contents were returned.\r
+\r
+  @retval EFI_OUT_OF_RESOURCES  The system has insufficient\r
+                                resources to process the request.\r
+\r
+  @retval EFI_INVALID_PARAMETER The GUID in InputSection does\r
+                                not match this instance of the\r
+                                GUIDed Section Extraction PPI.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CustomGuidedSectionExtract (\r
+  IN CONST  EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This,\r
+  IN CONST  VOID                                  *InputSection,\r
+  OUT       VOID                                  **OutputBuffer,\r
+  OUT       UINTN                                 *OutputSize,\r
+  OUT       UINT32                                *AuthenticationStatus\r
+  );\r
+\r
+/**\r
+   Decompresses a section to the output buffer.\r
+\r
+   This function looks up the compression type field in the input section and\r
+   applies the appropriate compression algorithm to compress the section to a\r
+   callee allocated buffer.\r
+\r
+   @param[in]  This                  Points to this instance of the\r
+                                     EFI_PEI_DECOMPRESS_PEI PPI.\r
+   @param[in]  CompressionSection    Points to the compressed section.\r
+   @param[out] OutputBuffer          Holds the returned pointer to the decompressed\r
+                                     sections.\r
+   @param[out] OutputSize            Holds the returned size of the decompress\r
+                                     section streams.\r
+\r
+   @retval EFI_SUCCESS           The section was decompressed successfully.\r
+                                 OutputBuffer contains the resulting data and\r
+                                 OutputSize contains the resulting size.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+Decompress (\r
+  IN CONST  EFI_PEI_DECOMPRESS_PPI  *This,\r
+  IN CONST  EFI_COMPRESSION_SECTION *CompressionSection,\r
+  OUT       VOID                    **OutputBuffer,\r
+  OUT       UINTN                   *OutputSize\r
+  );\r
+\r
+#endif\r