## @file
# CPU SMM driver.
#
# This SMM driver performs SMM initialization, deploy SMM Entry Vector,
# provides CPU specific services in SMM.
#
# Copyright (c) 2009 - 2016, 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.
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PiSmmCpuDxeSmmStm
  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
  SmmStm.c
  SmmStm.h

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

  Ia32/SmmInit.asm      | INTEL
  Ia32/SmiEntry.asm     | INTEL
  Ia32/SmiException.asm | INTEL
  Ia32/MpFuncs.asm      | INTEL

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

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

  X64/SmmInit.asm      | INTEL
  X64/SmiEntry.asm     | INTEL
  X64/SmiException.asm | INTEL
  X64/MpFuncs.asm      | INTEL

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

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  StmCpuPkg/StmCpuPkg.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
  TpmMeasurementLib

[Protocols]
  gEfiSmmAccess2ProtocolGuid               ## CONSUMES
  gEfiMpServiceProtocolGuid                ## CONSUMES
  gEfiSmmConfigurationProtocolGuid         ## PRODUCES
  gEfiSmmCpuProtocolGuid                   ## PRODUCES
  gEfiSmmReadyToLockProtocolGuid           ## NOTIFY
  gEfiSmmEndOfDxeProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiSmmCpuServiceProtocolGuid            ## PRODUCES
  gEfiSmMonitorInitProtocolGuid            ## SOMETIMES_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
  gMsegSmramGuid                           ## SOMETIMES_CONSUMES ## HOB

[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
  gStmCpuPkgTokenSpaceGuid.PcdCpuStmSupport                        ## 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
  gStmCpuPkgTokenSpaceGuid.PcdCpuMsegSize                          ## SOMETIMES_CONSUMES
  gStmCpuPkgTokenSpaceGuid.PcdCpuSmmStmExceptionStackSize          ## SOMETIMES_CONSUMES

[Depex]
  gEfiMpServiceProtocolGuid

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