• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   This file declares Vector Handoff Info PPI that describes an array of
3   interrupt and/or exception vectors that are in use and need to persist.
4 
5   This is an optional PPI that may be produced by SEC. If present, it provides
6   a description of the interrupt and/or exception vectors that were established
7   in the SEC Phase and need to persist into PEI and DXE.
8 
9   Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
10   This program and the accompanying materials
11   are licensed and made available under the terms and conditions of the BSD License
12   which accompanies this distribution.  The full text of the license may be found at
13   http://opensource.org/licenses/bsd-license.php
14 
15   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 
18   @par Revision Reference:
19   This PPI is introduced in PI Version 1.2.1.
20 
21 **/
22 
23 #ifndef __VECTOR_HANDOFF_INFO_H__
24 #define __VECTOR_HANDOFF_INFO_H__
25 
26 ///
27 /// NOTE: EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID can also be used in the PEI Phase
28 /// to build a GUIDed HOB that contains an array of EFI_VECTOR_HANDOFF_INFO.
29 ///
30 #define EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID \
31   { 0x3cd652b4, 0x6d33, 0x4dce, { 0x89, 0xdb, 0x83, 0xdf, 0x97, 0x66, 0xfc, 0xca }}
32 
33 ///
34 /// Vector Handoff Info Attributes
35 ///@{
36 #define EFI_VECTOR_HANDOFF_DO_NOT_HOOK 0x00000000
37 #define EFI_VECTOR_HANDOFF_HOOK_BEFORE 0x00000001
38 #define EFI_VECTOR_HANDOFF_HOOK_AFTER  0x00000002
39 #define EFI_VECTOR_HANDOFF_LAST_ENTRY  0x80000000
40 ///@}
41 
42 ///
43 /// EFI_VECTOR_HANDOFF_INFO entries that describes the interrupt and/or
44 /// exception vectors in use in the PEI Phase.
45 ///
46 typedef struct {
47   //
48   // The interrupt or exception vector that is in use and must be preserved.
49   //
50   UINT32    VectorNumber;
51   //
52   // A bitmask that describes the attributes ofthe interrupt or exception vector.
53   //
54   UINT32    Attribute;
55   //
56   // The GUID identifies the party who created the entry. For the
57   // EFI_VECTOR_HANDOFF_DO_NOT_HOOK case, this establishes the single owner.
58   //
59   EFI_GUID  Owner;
60 } EFI_VECTOR_HANDOFF_INFO;
61 
62 ///
63 /// Provides a description of the interrupt and/or exception vectors that
64 /// were established in the SEC Phase and need to persist into PEI and DXE.
65 ///
66 typedef struct _EFI_PEI_VECTOR_HANDOFF_INFO_PPI {
67   //
68   // Pointer to an array of interrupt and /or exception vectors.
69   //
70   EFI_VECTOR_HANDOFF_INFO  *Info;
71 } EFI_PEI_VECTOR_HANDOFF_INFO_PPI;
72 
73 extern EFI_GUID gEfiVectorHandoffInfoPpiGuid;
74 
75 #endif
76