// /** @file
// Memory Allocation Library instance dedicated to SMM Core.
//
// The implementation borrows the SMM Core Memory Allocation services as the primitive
// for memory allocation instead of using SMM System Table services in an indirect way.
// It is assumed that this library instance must be linked with SMM Cre in this package.
//
// Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Memory Allocation Library instance dedicated to SMM Core"

#string STR_MODULE_DESCRIPTION          #language en-US "The implementation borrows the SMM Core Memory Allocation services as the primitive for memory allocation instead of using SMM System Table services in an indirect way. This library is only intended to be linked with the SMM Core that resides in this same package."

