Contains function prototypes for Memory Services in the SMM Core.\r
\r
This header file borrows the PiSmmCore Memory Allocation services as the primitive\r
- for memory allocation. \r
+ for memory allocation.\r
\r
- Copyright (c) 2008 - 2010, 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
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+ Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\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