Ronak Kanabar | 1ae366f | 2023-06-07 01:21:56 +0530 | [diff] [blame^] | 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 - 2018, Intel Corporation. All rights reserved.<BR> |
| 10 | SPDX-License-Identifier: BSD-2-Clause-Patent |
| 11 | |
| 12 | @par Revision Reference: |
| 13 | This PPI is introduced in PI Version 1.2.1. |
| 14 | |
| 15 | **/ |
| 16 | |
| 17 | #ifndef __VECTOR_HANDOFF_INFO_H__ |
| 18 | #define __VECTOR_HANDOFF_INFO_H__ |
| 19 | |
| 20 | /// |
| 21 | /// NOTE: EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID can also be used in the PEI Phase |
| 22 | /// to build a GUIDed HOB that contains an array of EFI_VECTOR_HANDOFF_INFO. |
| 23 | /// |
| 24 | #define EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID \ |
| 25 | { 0x3cd652b4, 0x6d33, 0x4dce, { 0x89, 0xdb, 0x83, 0xdf, 0x97, 0x66, 0xfc, 0xca }} |
| 26 | |
| 27 | /// |
| 28 | /// Vector Handoff Info Attributes |
| 29 | ///@{ |
| 30 | #define EFI_VECTOR_HANDOFF_DO_NOT_HOOK 0x00000000 |
| 31 | #define EFI_VECTOR_HANDOFF_HOOK_BEFORE 0x00000001 |
| 32 | #define EFI_VECTOR_HANDOFF_HOOK_AFTER 0x00000002 |
| 33 | #define EFI_VECTOR_HANDOFF_LAST_ENTRY 0x80000000 |
| 34 | ///@} |
| 35 | |
| 36 | /// |
| 37 | /// EFI_VECTOR_HANDOFF_INFO entries that describes the interrupt and/or |
| 38 | /// exception vectors in use in the PEI Phase. |
| 39 | /// |
| 40 | typedef struct { |
| 41 | // |
| 42 | // The interrupt or exception vector that is in use and must be preserved. |
| 43 | // |
| 44 | UINT32 VectorNumber; |
| 45 | // |
| 46 | // A bitmask that describes the attributes of the interrupt or exception vector. |
| 47 | // |
| 48 | UINT32 Attribute; |
| 49 | // |
| 50 | // The GUID identifies the party who created the entry. For the |
| 51 | // EFI_VECTOR_HANDOFF_DO_NOT_HOOK case, this establishes the single owner. |
| 52 | // |
| 53 | EFI_GUID Owner; |
| 54 | } EFI_VECTOR_HANDOFF_INFO; |
| 55 | |
| 56 | /// |
| 57 | /// Provides a description of the interrupt and/or exception vectors that |
| 58 | /// were established in the SEC Phase and need to persist into PEI and DXE. |
| 59 | /// |
| 60 | typedef struct _EFI_PEI_VECTOR_HANDOFF_INFO_PPI { |
| 61 | // |
| 62 | // Pointer to an array of interrupt and /or exception vectors. |
| 63 | // |
| 64 | EFI_VECTOR_HANDOFF_INFO *Info; |
| 65 | } EFI_PEI_VECTOR_HANDOFF_INFO_PPI; |
| 66 | |
| 67 | extern EFI_GUID gEfiVectorHandoffInfoPpiGuid; |
| 68 | |
| 69 | #endif |