Home | History | Annotate | Download | only in Ppi
      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