]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/PiSmmCore/PiSmmCorePrivateData.h
MdeModulePkg/Core: allow HeapGuard even before CpuArchProtocol installed
[mirror_edk2.git] / MdeModulePkg / Core / PiSmmCore / PiSmmCorePrivateData.h
index ae1fae5080a37bb8cb02facecbfe52daa44df155..8aec7a6568facc26f12ad7b99867a4b1835df66e 100644 (file)
@@ -2,7 +2,7 @@
   The internal header file that declared a data structure that is shared\r
   between the SMM IPL and the SMM Core.\r
 \r
-  Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials are licensed and made available \r
   under the terms and conditions of the BSD License which accompanies this \r
   distribution.  The full text of the license may be found at        \r
 #ifndef _PI_SMM_CORE_PRIVATE_DATA_H_\r
 #define _PI_SMM_CORE_PRIVATE_DATA_H_\r
 \r
+///\r
+/// Define values for the communications buffer used when gEfiEventDxeDispatchGuid is\r
+/// event signaled.  This event is signaled by the DXE Core each time the DXE Core \r
+/// dispatcher has completed its work.  When this event is signaled, the SMM Core\r
+/// if notified, so the SMM Core can dispatch SMM drivers.  If COMM_BUFFER_SMM_DISPATCH_ERROR\r
+/// is returned in the communication buffer, then an error occurred dispatching SMM\r
+/// Drivers.  If COMM_BUFFER_SMM_DISPATCH_SUCCESS is returned, then the SMM Core \r
+/// dispatched all the drivers it could.  If COMM_BUFFER_SMM_DISPATCH_RESTART is \r
+/// returned, then the SMM Core just dispatched the SMM Driver that registered\r
+/// the SMM Entry Point enabling the use of SMM Mode.  In this case, the SMM Core\r
+/// should be notified again to dispatch more SMM Drivers using SMM Mode.\r
+///\r
+#define COMM_BUFFER_SMM_DISPATCH_ERROR    0x00\r
+#define COMM_BUFFER_SMM_DISPATCH_SUCCESS  0x01\r
+#define COMM_BUFFER_SMM_DISPATCH_RESTART  0x02\r
+\r
 ///\r
 /// Signature for the private structure shared between the SMM IPL and the SMM Core\r
 ///\r
@@ -25,7 +41,7 @@
 /// Private structure that is used to share information between the SMM IPL and \r
 /// the SMM Core.  This structure is allocated from memory of type EfiRuntimeServicesData.\r
 /// Since runtime memory types are converted to available memory when a legacy boot \r
-/// is performed, the SMM Core must access any fields of this structure if a legacy \r
+/// is performed, the SMM Core must not access any fields of this structure if a legacy \r
 /// boot is performed.  As a result, the SMM IPL must create an event notification \r
 /// for the Legacy Boot event and notify the SMM Core that a legacy boot is being \r
 /// performed.  The SMM Core can then use this information to filter accesses to \r
@@ -100,6 +116,10 @@ typedef struct {
   /// a software SMI handler back to the caller of the SMM Communication Protocol.\r
   ///\r
   EFI_STATUS                      ReturnStatus;\r
+\r
+  EFI_PHYSICAL_ADDRESS            PiSmmCoreImageBase;\r
+  UINT64                          PiSmmCoreImageSize;\r
+  EFI_PHYSICAL_ADDRESS            PiSmmCoreEntryPoint;\r
 } SMM_CORE_PRIVATE_DATA;\r
 \r
 #endif\r