## @file
# This package is a platform package that provide platform module/library
# required by Standalone MM platform.
#
# Copyright (c) 2016-2021, Arm Ltd. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#

[Defines]
  DEC_SPECIFICATION              = 0x0001001A
  PACKAGE_NAME                   = StandaloneMmPkg
  PACKAGE_GUID                   = 2AE82968-7769-4A85-A5BC-A0954CE54A5C
  PACKAGE_VERSION                = 1.0

[Includes]
  Include

[LibraryClasses]

  ##  @libraryclass  Defines a set of helper methods.
  FvLib|Include/Library/FvLib.h

  ##  @libraryclass  Defines a set of interfaces for the MM core entrypoint.
  StandaloneMmCoreEntryPoint|Include/Library/StandaloneMmCoreEntryPoint.h

  ##  @libraryclass  Defines a set of interfaces for the MM driver entrypoint.
  StandaloneMmDriverEntryPoint|Include/Library/StandaloneMmDriverEntryPoint.h

  ##  @libraryclass  Defines a set of interfaces that provides services for
  ##                 MM Memory Operation.
  MemLib|Include/Library/StandaloneMmMemLib.h

[LibraryClasses.AArch64]
  ##  @libraryclass  Defines a set of interfaces for the MM core entrypoint for
  ##                 AArch64.
  StandaloneMmCoreEntryPoint|Include/Library/AArch64/StandaloneMmCoreEntryPoint.h

[Guids]
  gStandaloneMmPkgTokenSpaceGuid           = { 0x18fe7632, 0xf5c8, 0x4e63, { 0x8d, 0xe8, 0x17, 0xa5, 0x5c, 0x59, 0x13, 0xbd }}
  gMpInformationHobGuid                    = { 0xba33f15d, 0x4000, 0x45c1, { 0x8e, 0x88, 0xf9, 0x16, 0x92, 0xd4, 0x57, 0xe3 }}
  gMmFvDispatchGuid                        = { 0xb65694cc, 0x09e3, 0x4c3b, { 0xb5, 0xcd, 0x05, 0xf4, 0x4d, 0x3c, 0xdb, 0xff }}

  ## Include/Guid/MmCoreData.h
  gMmCoreDataHobGuid                       = { 0xa160bf99, 0x2aa4, 0x4d7d, { 0x99, 0x93, 0x89, 0x9c, 0xb1, 0x2d, 0xf3, 0x76 }}

  ## Include/Guid/MmramMemoryReserve.h
  gEfiMmPeiMmramMemoryReserveGuid          = { 0x0703f912, 0xbf8d, 0x4e2a, { 0xbe, 0x07, 0xab, 0x27, 0x25, 0x25, 0xc5, 0x92 }}

  gEfiStandaloneMmNonSecureBufferGuid      = { 0xf00497e3, 0xbfa2, 0x41a1, { 0x9d, 0x29, 0x54, 0xc2, 0xe9, 0x37, 0x21, 0xc5 }}
  gEfiArmTfCpuDriverEpDescriptorGuid       = { 0x6ecbd5a1, 0xc0f8, 0x4702, { 0x83, 0x01, 0x4f, 0xc2, 0xc5, 0x47, 0x0a, 0x51 }}

