This header file borrows the PiSmmCore Memory Allocation services as the primitive\r
for memory allocation. \r
\r
- Copyright (c) 2008 - 2010, Intel Corporation<BR>\r
- All rights reserved. This program and the accompanying materials \r
+ Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
http://opensource.org/licenses/bsd-license.php \r
#ifndef _PI_SMM_CORE_MEMORY_ALLOCATION_SERVICES_H_\r
#define _PI_SMM_CORE_MEMORY_ALLOCATION_SERVICES_H_\r
\r
+//\r
+// It should be aligned with the definition in PiSmmCore.\r
+//\r
+typedef struct {\r
+ UINTN Signature;\r
+\r
+ ///\r
+ /// The ImageHandle passed into the entry point of the SMM IPL. This ImageHandle\r
+ /// is used by the SMM Core to fill in the ParentImageHandle field of the Loaded\r
+ /// Image Protocol for each SMM Driver that is dispatched by the SMM Core.\r
+ ///\r
+ EFI_HANDLE SmmIplImageHandle;\r
+\r
+ ///\r
+ /// The number of SMRAM ranges passed from the SMM IPL to the SMM Core. The SMM\r
+ /// Core uses these ranges of SMRAM to initialize the SMM Core memory manager.\r
+ ///\r
+ UINTN SmramRangeCount;\r
+\r
+ ///\r
+ /// A table of SMRAM ranges passed from the SMM IPL to the SMM Core. The SMM\r
+ /// Core uses these ranges of SMRAM to initialize the SMM Core memory manager.\r
+ ///\r
+ EFI_SMRAM_DESCRIPTOR *SmramRanges;\r
+\r
+ ///\r
+ /// The SMM Foundation Entry Point. The SMM Core fills in this field when the \r
+ /// SMM Core is initialized. The SMM IPL is responsbile for registering this entry \r
+ /// point with the SMM Configuration Protocol. The SMM Configuration Protocol may \r
+ /// not be available at the time the SMM IPL and SMM Core are started, so the SMM IPL\r
+ /// sets up a protocol notification on the SMM Configuration Protocol and registers \r
+ /// the SMM Foundation Entry Point as soon as the SMM Configuration Protocol is \r
+ /// available.\r
+ ///\r
+ EFI_SMM_ENTRY_POINT SmmEntryPoint;\r
+ \r
+ ///\r
+ /// Boolean flag set to TRUE while an SMI is being processed by the SMM Core.\r
+ /// \r
+ BOOLEAN SmmEntryPointRegistered;\r
+\r
+ ///\r
+ /// Boolean flag set to TRUE while an SMI is being processed by the SMM Core.\r
+ /// \r
+ BOOLEAN InSmm;\r
+\r
+ ///\r
+ /// This field is set by the SMM Core then the SMM Core is initialized. This field is\r
+ /// used by the SMM Base 2 Protocol and SMM Communication Protocol implementations in\r
+ /// the SMM IPL. \r
+ ///\r
+ EFI_SMM_SYSTEM_TABLE2 *Smst;\r
+\r
+ ///\r
+ /// This field is used by the SMM Communicatioon Protocol to pass a buffer into \r
+ /// a software SMI handler and for the software SMI handler to pass a buffer back to\r
+ /// the caller of the SMM Communication Protocol. \r
+ ///\r
+ VOID *CommunicationBuffer;\r
+\r
+ ///\r
+ /// This field is used by the SMM Communicatioon Protocol to pass the size of a buffer,\r
+ /// in bytes, into a software SMI handler and for the software SMI handler to pass the \r
+ /// size, in bytes, of a buffer back to the caller of the SMM Communication Protocol.\r
+ ///\r
+ UINTN BufferSize;\r
+\r
+ ///\r
+ /// This field is used by the SMM Communication Protocol to pass the return status from\r
+ /// 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
+/**\r
+ Called to initialize the memory service.\r
+\r
+ @param SmramRangeCount Number of SMRAM Regions\r
+ @param SmramRanges Pointer to SMRAM Descriptors\r
+\r
+**/\r
+VOID\r
+SmmInitializeMemoryServices (\r
+ IN UINTN SmramRangeCount,\r
+ IN EFI_SMRAM_DESCRIPTOR *SmramRanges\r
+ );\r
+\r
/**\r
Allocates pages from the memory map.\r
\r