// /** @file
// SMM memory check library.
//
// SMM memory check library library implementation. This library consumes SMM_ACCESS2_PROTOCOL
// to get SMRAM information. In order to use this library instance, the platform should produce
// all SMRAM range via SMM_ACCESS2_PROTOCOL, including the range for firmware (like SMM Core
// and SMM driver) and/or specific dedicated hardware.
//
// Copyright (c) 2015, 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.
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "SMM memory check library"

#string STR_MODULE_DESCRIPTION          #language en-US "SMM memory check library library implementation. This library consumes SMM_ACCESS2_PROTOCOL to get SMRAM information. In order to use this library instance, the platform should produce all SMRAM range via SMM_ACCESS2_PROTOCOL, including the range for firmware (like SMM Core and SMM driver) and/or specific dedicated hardware."

