## @file
# CPU SMM driver.
#
# This SMM driver performs SMM initialization, deploy SMM Entry Vector,
# provides CPU specific services in SMM.
#
# Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2017, AMD Incorporated. 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.
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PiSmmCpuDxeSmm
  MODULE_UNI_FILE                = PiSmmCpuDxeSmm.uni
  FILE_GUID                      = A3FF0EF5-0C28-42f5-B544-8C7DE1E80014
  MODULE_TYPE                    = DXE_SMM_DRIVER
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x0001000A
  ENTRY_POINT                    = PiCpuSmmEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  PiSmmCpuDxeSmm.c
  PiSmmCpuDxeSmm.h
  MpService.c
  SyncTimer.c
  CpuS3.c
  CpuService.c
  CpuService.h
  SmmProfile.c
  SmmProfile.h
  SmmProfileInternal.h
  SmramSaveState.c
  SmmCpuMemoryManagement.c

[Sources.Ia32]
  Ia32/Semaphore.c
  Ia32/PageTbl.c
  Ia32/SmmFuncsArch.c
  Ia32/SmmProfileArch.c
  Ia32/SmmProfileArch.h
  Ia32/SmmInit.asm
  Ia32/SmiEntry.asm
  Ia32/SmiException.asm
  Ia32/MpFuncs.asm

  Ia32/SmmInit.nasm
  Ia32/SmiEntry.nasm
  Ia32/SmiException.nasm
  Ia32/MpFuncs.nasm

  Ia32/SmmInit.S
  Ia32/SmiEntry.S
  Ia32/SmiException.S
  Ia32/MpFuncs.S

[Sources.X64]
  X64/Semaphore.c
  X64/PageTbl.c
  X64/SmmFuncsArch.c
  X64/SmmProfileArch.c
  X64/SmmProfileArch.h
  X64/SmmInit.asm
  X64/SmiEntry.asm
  X64/SmiException.asm
  X64/MpFuncs.asm

  X64/SmmInit.nasm
  X64/SmiEntry.nasm
  X64/SmiException.nasm
  X64/MpFuncs.nasm

  X64/SmmInit.S
  X64/SmiEntry.S
  X64/SmiException.S
  X64/MpFuncs.S

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  CacheMaintenanceLib
  PcdLib
  DebugLib
  BaseLib
  SynchronizationLib
  BaseMemoryLib
  MtrrLib
  IoLib
  TimerLib
  SmmServicesTableLib
  MemoryAllocationLib
  DebugAgentLib
  HobLib
  PciLib
  LocalApicLib
  UefiCpuLib
  SmmCpuPlatformHookLib
  CpuExceptionHandlerLib
  UefiLib
  DxeServicesTableLib
  CpuLib
  ReportStatusCodeLib
  SmmCpuFeaturesLib
  PeCoffGetEntryPointLib

[Protocols]
  gEfiSmmAccess2ProtocolGuid               ## CONSUMES
  gEfiMpServiceProtocolGuid                ## CONSUMES
  gEfiSmmConfigurationProtocolGuid         ## PRODUCES
  gEfiSmmCpuProtocolGuid                   ## PRODUCES
  gEfiSmmReadyToLockProtocolGuid           ## NOTIFY
  gEfiSmmCpuServiceProtocolGuid            ## PRODUCES

[Guids]
  gEfiAcpiVariableGuid                     ## SOMETIMES_CONSUMES ## HOB # it is used for S3 boot.
  gEfiGlobalVariableGuid                   ## SOMETIMES_PRODUCES ## Variable:L"SmmProfileData"
  gEfiAcpi20TableGuid                      ## SOMETIMES_CONSUMES ## SystemTable
  gEfiAcpi10TableGuid                      ## SOMETIMES_CONSUMES ## SystemTable
  gEdkiiPiSmmMemoryAttributesTableGuid     ## CONSUMES ## SystemTable
  gEfiMemoryAttributesTableGuid            ## CONSUMES ## SystemTable  # RPCO-0093: RoyalParkOverrideContent

[FeaturePcd]
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug                         ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp            ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmEnableBspElection             ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport                   ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard                    ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileEnable                 ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer             ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock         ## CONSUMES

[Pcd]
  gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber        ## SOMETIMES_CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileSize                   ## SOMETIMES_CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize                     ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout                 ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuS3DataAddress                    ## SOMETIMES_CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugDataAddress               ## SOMETIMES_PRODUCES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable         ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode                      ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStaticPageTable               ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask    ## CONSUMES

[Depex]
  gEfiMpServiceProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  PiSmmCpuDxeSmmExtra.uni
