• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   This file declares DXE Initial Program Load PPI.
3   When the PEI core is done it calls the DXE IPL PPI to load the DXE Foundation.
4 
5   Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
6   This program and the accompanying materials
7   are licensed and made available under the terms and conditions of the BSD License
8   which accompanies this distribution.  The full text of the license may be found at
9   http://opensource.org/licenses/bsd-license.php
10 
11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 
14   @par Revision Reference:
15   This PPI is introduced in PI Version 1.0.
16 
17 **/
18 
19 #ifndef __DXE_IPL_H__
20 #define __DXE_IPL_H__
21 
22 #define EFI_DXE_IPL_PPI_GUID \
23   { \
24     0xae8ce5d, 0xe448, 0x4437, {0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31 } \
25   }
26 
27 typedef struct _EFI_DXE_IPL_PPI EFI_DXE_IPL_PPI;
28 
29 /**
30   The architectural PPI that the PEI Foundation invokes when
31   there are no additional PEIMs to invoke.
32 
33   This function is invoked by the PEI Foundation.
34   The PEI Foundation will invoke this service when there are
35   no additional PEIMs to invoke in the system.
36   If this PPI does not exist, it is an error condition and
37   an ill-formed firmware set. The DXE IPL PPI should never
38   return after having been invoked by the PEI Foundation.
39   The DXE IPL PPI can do many things internally, including the following:
40     - Invoke the DXE entry point from a firmware volume
41     - Invoke the recovery processing modules
42     - Invoke the S3 resume modules
43 
44   @param  This           Pointer to the DXE IPL PPI instance
45   @param  PeiServices    Pointer to the PEI Services Table.
46   @param  HobList        Pointer to the list of Hand-Off Block (HOB) entries.
47 
48   @retval EFI_SUCCESS    Upon this return code, the PEI Foundation should enter
49                          some exception handling.Under normal circumstances,
50                          the DXE IPL PPI should not return.
51 
52 **/
53 typedef
54 EFI_STATUS
55 (EFIAPI *EFI_DXE_IPL_ENTRY)(
56   IN CONST EFI_DXE_IPL_PPI        *This,
57   IN EFI_PEI_SERVICES             **PeiServices,
58   IN EFI_PEI_HOB_POINTERS         HobList
59   );
60 
61 ///
62 /// Final service to be invoked by the PEI Foundation.
63 /// The DXE IPL PPI is responsible for locating and loading the DXE Foundation.
64 /// The DXE IPL PPI may use PEI services to locate and load the DXE Foundation.
65 ///
66 struct _EFI_DXE_IPL_PPI {
67   EFI_DXE_IPL_ENTRY Entry;
68 };
69 
70 extern EFI_GUID gEfiDxeIplPpiGuid;
71 
72 #endif
73