## @file
#  CPU driver installs CPU PI Multi-processor PPI.
#
#  Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = CpuMpPei
  MODULE_UNI_FILE                = CpuMpPei.uni
  FILE_GUID                      = EDADEB9D-DDBA-48BD-9D22-C1C169C8C5C6
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = CpuMpPeimInit

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  CpuMpPei.h
  CpuMpPei.c
  CpuBist.c
  CpuPaging.c
  CpuMp2Pei.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  HobLib
  LocalApicLib
  PeimEntryPoint
  PeiServicesLib
  ReportStatusCodeLib
  CpuExceptionHandlerLib
  MpInitLib
  BaseMemoryLib
  CpuLib
  MemoryAllocationLib

[Guids]
  gEdkiiMigratedFvInfoGuid                                             ## SOMETIMES_CONSUMES     ## HOB

[Ppis]
  gEfiPeiMpServicesPpiGuid                      ## PRODUCES
  gEfiSecPlatformInformationPpiGuid             ## SOMETIMES_CONSUMES
  ## SOMETIMES_CONSUMES
  ## PRODUCES
  ## UNDEFINED # HOB
  gEfiSecPlatformInformation2PpiGuid
  gEfiVectorHandoffInfoPpiGuid                  ## SOMETIMES_CONSUMES
  gEfiPeiMemoryDiscoveredPpiGuid                ## CONSUMES
  gEdkiiPeiMpServices2PpiGuid                   ## PRODUCES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard                       ## CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuStackSwitchExceptionList              ## SOMETIMES_CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize                    ## SOMETIMES_CONSUMES
  gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize                           ## SOMETIMES_CONSUMES

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  CpuMpPeiExtra.uni

