// /** @file
// PI SMM Communication SMM driver that installs the SMM Communication ACPI Table.
//
// This SMM driver installs the SMM Communication ACPI Table defined in the UEFI spec
// which provides a mechanism that can be used in the OS present environment by
// non-firmware agents for inter-mode communication with SMM agents. It also saves
// SMM communication context for use by SMM Communication PEIM in the S3 boot mode.
//
// Copyright (c) 2010 - 2014, 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 "PI SMM Communication SMM driver that installs the SMM Communication ACPI Table"

#string STR_MODULE_DESCRIPTION          #language en-US "This SMM driver installs the SMM Communication ACPI Table defined in the UEFI Specification, which provides a mechanism that can be used in the OS-present environment by non-firmware agents for inter-mode communication with SMM agents. It also saves an SMM communication context for use by SMM Communication PEIM in the S3 boot mode."
