blob: bf5b8c994400f69f8b7c3f84dd36ae7db3116a52 [file] [log] [blame]
/** @file
This file declares Vector Handoff Info PPI that describes an array of
interrupt and/or exception vectors that are in use and need to persist.
This is an optional PPI that may be produced by SEC. If present, it provides
a description of the interrupt and/or exception vectors that were established
in the SEC Phase and need to persist into PEI and DXE.
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
This PPI is introduced in PI Version 1.2.1.
**/
#ifndef __VECTOR_HANDOFF_INFO_H__
#define __VECTOR_HANDOFF_INFO_H__
///
/// NOTE: EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID can also be used in the PEI Phase
/// to build a GUIDed HOB that contains an array of EFI_VECTOR_HANDOFF_INFO.
///
#define EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID \
{ 0x3cd652b4, 0x6d33, 0x4dce, { 0x89, 0xdb, 0x83, 0xdf, 0x97, 0x66, 0xfc, 0xca }}
///
/// Vector Handoff Info Attributes
///@{
#define EFI_VECTOR_HANDOFF_DO_NOT_HOOK 0x00000000
#define EFI_VECTOR_HANDOFF_HOOK_BEFORE 0x00000001
#define EFI_VECTOR_HANDOFF_HOOK_AFTER 0x00000002
#define EFI_VECTOR_HANDOFF_LAST_ENTRY 0x80000000
///@}
///
/// EFI_VECTOR_HANDOFF_INFO entries that describes the interrupt and/or
/// exception vectors in use in the PEI Phase.
///
typedef struct {
//
// The interrupt or exception vector that is in use and must be preserved.
//
UINT32 VectorNumber;
//
// A bitmask that describes the attributes of the interrupt or exception vector.
//
UINT32 Attribute;
//
// The GUID identifies the party who created the entry. For the
// EFI_VECTOR_HANDOFF_DO_NOT_HOOK case, this establishes the single owner.
//
EFI_GUID Owner;
} EFI_VECTOR_HANDOFF_INFO;
///
/// Provides a description of the interrupt and/or exception vectors that
/// were established in the SEC Phase and need to persist into PEI and DXE.
///
typedef struct _EFI_PEI_VECTOR_HANDOFF_INFO_PPI {
//
// Pointer to an array of interrupt and /or exception vectors.
//
EFI_VECTOR_HANDOFF_INFO *Info;
} EFI_PEI_VECTOR_HANDOFF_INFO_PPI;
extern EFI_GUID gEfiVectorHandoffInfoPpiGuid;
#endif