## @file
#  CPU driver installs CPU PI Multi-processor PPI.
#
#  Copyright (c) 2015 - 2018, 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                      = 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

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  HobLib
  LocalApicLib
  PeimEntryPoint
  PeiServicesLib
  ReportStatusCodeLib
  CpuExceptionHandlerLib
  MpInitLib
  BaseMemoryLib

[Ppis]
  gEfiPeiMpServicesPpiGuid                      ## PRODUCES
  gEfiSecPlatformInformationPpiGuid             ## SOMETIMES_CONSUMES
  ## SOMETIMES_CONSUMES
  ## PRODUCES
  ## UNDEFINED # HOB
  gEfiSecPlatformInformation2PpiGuid
  gEfiVectorHandoffInfoPpiGuid                  ## SOMETIMES_CONSUMES
  gEfiPeiMemoryDiscoveredPpiGuid                ## CONSUMES

[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

