Signed-off-by: vanjeff Reviewed-by: rsun3 Reviewed-by: mdkinney git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12580 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			225 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Master header file for DxeIpl PEIM. All source files in this module should
 | |
|   include this file for common definitions.
 | |
| 
 | |
| Copyright (c) 2006 - 2011, 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
 | |
| which accompanies this distribution.  The full text of the license may be found at
 | |
| http://opensource.org/licenses/bsd-license.php
 | |
| 
 | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __PEI_DXEIPL_H__
 | |
| #define __PEI_DXEIPL_H__
 | |
| 
 | |
| #include <PiPei.h>
 | |
| #include <Ppi/DxeIpl.h>
 | |
| #include <Ppi/EndOfPeiPhase.h>
 | |
| #include <Ppi/MemoryDiscovered.h>
 | |
| #include <Ppi/ReadOnlyVariable2.h>
 | |
| #include <Ppi/Decompress.h>
 | |
| #include <Ppi/FirmwareVolumeInfo.h>
 | |
| #include <Ppi/GuidedSectionExtraction.h>
 | |
| #include <Ppi/LoadFile.h>
 | |
| #include <Ppi/S3Resume2.h>
 | |
| #include <Ppi/RecoveryModule.h>
 | |
| 
 | |
| #include <Guid/MemoryTypeInformation.h>
 | |
| #include <Guid/MemoryAllocationHob.h>
 | |
| #include <Guid/FirmwareFileSystem2.h>
 | |
| 
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/PeimEntryPoint.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/HobLib.h>
 | |
| #include <Library/PeiServicesLib.h>
 | |
| #include <Library/ReportStatusCodeLib.h>
 | |
| #include <Library/UefiDecompressLib.h>
 | |
| #include <Library/ExtractGuidedSectionLib.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/PcdLib.h>
 | |
| #include <Library/S3Lib.h>
 | |
| #include <Library/RecoveryLib.h>
 | |
| #include <Library/DebugAgentLib.h>
 | |
| #include <Library/PeiServicesTablePointerLib.h>
 | |
| 
 | |
| #define STACK_SIZE      0x20000
 | |
| #define BSP_STORE_SIZE  0x4000
 | |
| 
 | |
| 
 | |
| //
 | |
| // This PPI is installed to indicate the end of the PEI usage of memory
 | |
| //
 | |
| extern CONST EFI_PEI_PPI_DESCRIPTOR gEndOfPeiSignalPpi;
 | |
| 
 | |
| 
 | |
| /**
 | |
|    Searches DxeCore in all firmware Volumes and loads the first
 | |
|    instance that contains DxeCore.
 | |
| 
 | |
|    @return FileHandle of DxeCore to load DxeCore.
 | |
| 
 | |
| **/
 | |
| EFI_PEI_FILE_HANDLE
 | |
| DxeIplFindDxeCore (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|    Main entry point to last PEIM
 | |
| 
 | |
|    @param This          Entry point for DXE IPL PPI
 | |
|    @param PeiServices   General purpose services available to every PEIM.
 | |
|    @param HobList       Address to the Pei HOB list
 | |
| 
 | |
|    @return EFI_SUCCESS              DXE core was successfully loaded.
 | |
|    @return EFI_OUT_OF_RESOURCES     There are not enough resources to load DXE core.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| DxeLoadCore (
 | |
|   IN CONST EFI_DXE_IPL_PPI *This,
 | |
|   IN EFI_PEI_SERVICES      **PeiServices,
 | |
|   IN EFI_PEI_HOB_POINTERS  HobList
 | |
|   );
 | |
| 
 | |
| 
 | |
| 
 | |
| /**
 | |
|    Transfers control to DxeCore.
 | |
| 
 | |
|    This function performs a CPU architecture specific operations to execute
 | |
|    the entry point of DxeCore with the parameters of HobList.
 | |
|    It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase.
 | |
| 
 | |
|    @param DxeCoreEntryPoint         The entry point of DxeCore.
 | |
|    @param HobList                   The start of HobList passed to DxeCore.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| HandOffToDxeCore (
 | |
|   IN EFI_PHYSICAL_ADDRESS   DxeCoreEntryPoint,
 | |
|   IN EFI_PEI_HOB_POINTERS   HobList
 | |
|   );
 | |
| 
 | |
| 
 | |
| 
 | |
| /**
 | |
|    Updates the Stack HOB passed to DXE phase.
 | |
| 
 | |
|    This function traverses the whole HOB list and update the stack HOB to
 | |
|    reflect the real stack that is used by DXE core.
 | |
| 
 | |
|    @param BaseAddress           The lower address of stack used by DxeCore.
 | |
|    @param Length                The length of stack used by DxeCore.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| UpdateStackHob (
 | |
|   IN EFI_PHYSICAL_ADDRESS        BaseAddress,
 | |
|   IN UINT64                      Length
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   The ExtractSection() function processes the input section and
 | |
|   returns a pointer to the section contents. If the section being
 | |
|   extracted does not require processing (if the section
 | |
|   GuidedSectionHeader.Attributes has the
 | |
|   EFI_GUIDED_SECTION_PROCESSING_REQUIRED field cleared), then
 | |
|   OutputBuffer is just updated to point to the start of the
 | |
|   section's contents. Otherwise, *Buffer must be allocated
 | |
|   from PEI permanent memory.
 | |
| 
 | |
|   @param This                   Indicates the
 | |
|                                 EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI instance.
 | |
|                                 Buffer containing the input GUIDed section to be
 | |
|                                 processed. OutputBuffer OutputBuffer is
 | |
|                                 allocated from PEI permanent memory and contains
 | |
|                                 the new section stream.
 | |
|   @param InputSection           A pointer to the input buffer, which contains
 | |
|                                 the input section to be processed.
 | |
|   @param OutputBuffer           A pointer to a caller-allocated buffer, whose
 | |
|                                 size is specified by the contents of OutputSize.
 | |
|   @param OutputSize             A pointer to a caller-allocated
 | |
|                                 UINTN in which the size of *OutputBuffer
 | |
|                                 allocation is stored. If the function
 | |
|                                 returns anything other than EFI_SUCCESS,
 | |
|                                 the value of OutputSize is undefined.
 | |
|   @param AuthenticationStatus   A pointer to a caller-allocated
 | |
|                                 UINT32 that indicates the
 | |
|                                 authentication status of the
 | |
|                                 output buffer. If the input
 | |
|                                 section's GuidedSectionHeader.
 | |
|                                 Attributes field has the
 | |
|                                 EFI_GUIDED_SECTION_AUTH_STATUS_VALID
 | |
|                                 bit as clear,
 | |
|                                 AuthenticationStatus must return
 | |
|                                 zero. These bits reflect the
 | |
|                                 status of the extraction
 | |
|                                 operation. If the function
 | |
|                                 returns anything other than
 | |
|                                 EFI_SUCCESS, the value of
 | |
|                                 AuthenticationStatus is
 | |
|                                 undefined.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The InputSection was
 | |
|                                 successfully processed and the
 | |
|                                 section contents were returned.
 | |
| 
 | |
|   @retval EFI_OUT_OF_RESOURCES  The system has insufficient
 | |
|                                 resources to process the request.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER The GUID in InputSection does
 | |
|                                 not match this instance of the
 | |
|                                 GUIDed Section Extraction PPI.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| CustomGuidedSectionExtract (
 | |
|   IN CONST  EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This,
 | |
|   IN CONST  VOID                                  *InputSection,
 | |
|   OUT       VOID                                  **OutputBuffer,
 | |
|   OUT       UINTN                                 *OutputSize,
 | |
|   OUT       UINT32                                *AuthenticationStatus
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|    Decompresses a section to the output buffer.
 | |
| 
 | |
|    This function looks up the compression type field in the input section and
 | |
|    applies the appropriate compression algorithm to compress the section to a
 | |
|    callee allocated buffer.
 | |
| 
 | |
|    @param  This                  Points to this instance of the
 | |
|                                  EFI_PEI_DECOMPRESS_PEI PPI.
 | |
|    @param  CompressionSection    Points to the compressed section.
 | |
|    @param  OutputBuffer          Holds the returned pointer to the decompressed
 | |
|                                  sections.
 | |
|    @param  OutputSize            Holds the returned size of the decompress
 | |
|                                  section streams.
 | |
| 
 | |
|    @retval EFI_SUCCESS           The section was decompressed successfully.
 | |
|                                  OutputBuffer contains the resulting data and
 | |
|                                  OutputSize contains the resulting size.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| Decompress (
 | |
|   IN CONST  EFI_PEI_DECOMPRESS_PPI  *This,
 | |
|   IN CONST  EFI_COMPRESSION_SECTION *CompressionSection,
 | |
|   OUT       VOID                    **OutputBuffer,
 | |
|   OUT       UINTN                   *OutputSize
 | |
|   );
 | |
| 
 | |
| #endif
 |