## @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 that provides services for
  ##                 MM Memory Operation.
  MemLib|Include/Library/StandaloneMmMemLib.h

[LibraryClasses.AArch64, LibraryClasses.ARM]
  ##  @libraryclass  Defines a set of interfaces for the MM core entrypoint for
  ##                 AArch64 and ARM.
  StandaloneMmCoreEntryPoint|Include/Library/Arm/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 }}
  gEfiMmCpuDriverEpDescriptorGuid          = { 0x6ecbd5a1, 0xc0f8, 0x4702, { 0x83, 0x01, 0x4f, 0xc2, 0xc5, 0x47, 0x0a, 0x51 }}

[PcdsFixedAtBuild, PcdsPatchableInModule]
  ## Maximum permitted encapsulation levels of sections in a firmware volume,
  #  in the MM phase. Minimum value is 1. Sections nested more deeply are rejected.
  # @Prompt Maximum permitted FwVol section nesting depth (exclusive) in MM.
  gStandaloneMmPkgTokenSpaceGuid.PcdFwVolMmMaxEncapsulationDepth|0x10|UINT32|0x00000001
