3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/** @file
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync This file declares DXE Initial Program Load PPI.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync When the PEI core is done it calls the DXE IPL PPI to load the DXE Foundation.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync This program and the accompanying materials
c0b6af690ad705bddfa87c643b89770a7a0aaf5avboxsync are licensed and made available under the terms and conditions of the BSD License
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync which accompanies this distribution. The full text of the license may be found at
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync http://opensource.org/licenses/bsd-license.php
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync @par Revision Reference:
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync This PPI is introduced in PI Version 1.0.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync**/
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#ifndef __DXE_IPL_H__
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#define __DXE_IPL_H__
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#define EFI_DXE_IPL_PPI_GUID \
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync { \
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync 0xae8ce5d, 0xe448, 0x4437, {0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31 } \
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync }
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsynctypedef struct _EFI_DXE_IPL_PPI EFI_DXE_IPL_PPI;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/**
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync The architectural PPI that the PEI Foundation invokes when
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync there are no additional PEIMs to invoke.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync This function is invoked by the PEI Foundation.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync The PEI Foundation will invoke this service when there are
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync no additional PEIMs to invoke in the system.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync If this PPI does not exist, it is an error condition and
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync an ill-formed firmware set. The DXE IPL PPI should never
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync return after having been invoked by the PEI Foundation.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync The DXE IPL PPI can do many things internally, including the following:
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync - Invoke the DXE entry point from a firmware volume
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync - Invoke the recovery processing modules
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync - Invoke the S3 resume modules
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync @param This Pointer to the DXE IPL PPI instance
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync @param PeiServices Pointer to the PEI Services Table.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync @param HobList Pointer to the list of Hand-Off Block (HOB) entries.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync @retval EFI_SUCCESS Upon this return code, the PEI Foundation should enter
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync some exception handling.Under normal circumstances,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync the DXE IPL PPI should not return.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync**/
3331475701a5b12f98b3cfea07d5dca60072530fvboxsynctypedef
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncEFI_STATUS
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync(EFIAPI *EFI_DXE_IPL_ENTRY)(
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync IN CONST EFI_DXE_IPL_PPI *This,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync IN EFI_PEI_SERVICES **PeiServices,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync IN EFI_PEI_HOB_POINTERS HobList
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync );
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync///
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/// Final service to be invoked by the PEI Foundation.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/// The DXE IPL PPI is responsible for locating and loading the DXE Foundation.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/// The DXE IPL PPI may use PEI services to locate and load the DXE Foundation.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync///
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncstruct _EFI_DXE_IPL_PPI {
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync EFI_DXE_IPL_ENTRY Entry;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync};
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncextern EFI_GUID gEfiDxeIplPpiGuid;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#endif
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync