summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MdePkg/Include/Guid/VectorHandoffTable.h33
-rw-r--r--MdePkg/Include/Ppi/VectorHandoffInfo.h75
-rw-r--r--MdePkg/MdePkg.dec19
3 files changed, 121 insertions, 6 deletions
diff --git a/MdePkg/Include/Guid/VectorHandoffTable.h b/MdePkg/Include/Guid/VectorHandoffTable.h
new file mode 100644
index 0000000000..a3b3a95e89
--- /dev/null
+++ b/MdePkg/Include/Guid/VectorHandoffTable.h
@@ -0,0 +1,33 @@
+/** @file
+ GUID for system configuration table entry that points to the table
+ in case an entity in DXE wishes to update/change the vector table contents.
+
+ Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
+ This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ @par Revision Reference:
+ GUID defined in PI 1.2.1 spec.
+**/
+
+#ifndef __EFI_VECTOR_HANDOFF_TABLE_H__
+#define __EFI_VECTOR_HANDOFF_TABLE_H__
+
+#include <Ppi/VectorHandoffInfo.h>
+
+//
+// System configuration table entry that points to the table
+// in case an entity in DXE wishes to update/change the vector
+// table contents.
+//
+#define EFI_VECTOR_HANDOF_TABLE_GUID \
+ { 0x996ec11c, 0x5397, 0x4e73, { 0xb5, 0x8f, 0x82, 0x7e, 0x52, 0x90, 0x6d, 0xef }}
+
+extern EFI_GUID gEfiVectorHandoffTableGuid;
+
+#endif
diff --git a/MdePkg/Include/Ppi/VectorHandoffInfo.h b/MdePkg/Include/Ppi/VectorHandoffInfo.h
new file mode 100644
index 0000000000..84cad70463
--- /dev/null
+++ b/MdePkg/Include/Ppi/VectorHandoffInfo.h
@@ -0,0 +1,75 @@
+/** @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, Intel Corporation. All rights reserved.<BR>
+ This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ @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 ofthe 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
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
index b02cf0b28c..dc7e63b209 100644
--- a/MdePkg/MdePkg.dec
+++ b/MdePkg/MdePkg.dec
@@ -607,6 +607,9 @@
## Include/Guid/FirmwareContentsSigned.h
gEfiFirmwareContentsSignedGuid = { 0xf9d89e8, 0x9259, 0x4f76, { 0xa5, 0xaf, 0xc, 0x89, 0xe3, 0x40, 0x23, 0xdf }}
+ ## Include/Guid/VectorHandoffTable.h
+ gEfiVectorHandoffTableGuid = { 0x996ec11c, 0x5397, 0x4e73, { 0xb5, 0x8f, 0x82, 0x7e, 0x52, 0x90, 0x6d, 0xef }}
+
[Guids.IA32, Guids.X64]
## Include/Guid/Cper.h
gEfiIa32X64ErrorTypeCacheCheckGuid = { 0xA55701F5, 0xE3EF, 0x43de, { 0xAC, 0x72, 0x24, 0x9B, 0x57, 0x3F, 0xAD, 0x2C }}
@@ -710,6 +713,16 @@
gEfiTemporaryRamDonePpiGuid = { 0xceab683c, 0xec56, 0x4a2d, { 0xa9, 0x6, 0x40, 0x53, 0xfa, 0x4e, 0x9c, 0x16 } }
#
+ # PPIs defined in PI 1.2.1.
+ #
+
+ ## Include/Ppi/PiPcdInfo.h
+ gEfiGetPcdInfoPpiGuid = { 0xa60c6b59, 0xe459, 0x425d, { 0x9c, 0x69, 0xb, 0xcc, 0x9c, 0xb2, 0x7d, 0x81 } }
+
+ ## Include/Ppi/VectorHandoffInfo.h
+ gEfiVectorHandoffInfoPpiGuid = { 0x3cd652b4, 0x6d33, 0x4dce, { 0x89, 0xdb, 0x83, 0xdf, 0x97, 0x66, 0xfc, 0xca }}
+
+ #
# PPIs defined in PI 1.3.
#
@@ -720,12 +733,6 @@
gEfiPeiFirmwareVolumeInfo2PpiGuid = { 0xea7ca24b, 0xded5, 0x4dad, { 0xa3, 0x89, 0xbf, 0x82, 0x7e, 0x8f, 0x9b, 0x38 } }
- #
- # PPIs defined in PI 1.2.1.
- #
-
- ## Include/Ppi/PiPcdInfo.h
- gEfiGetPcdInfoPpiGuid = { 0xa60c6b59, 0xe459, 0x425d, { 0x9c, 0x69, 0xb, 0xcc, 0x9c, 0xb2, 0x7d, 0x81 } }
[Protocols]
## Include/Protocol/Pcd.h