## @file
# MP Cpu module.
#
# @copyright
#  INTEL CONFIDENTIAL
#  Copyright 1999 - 2017 Intel Corporation.
#
#  The source code contained or described herein and all documents related to the
#  source code ("Material") are owned by Intel Corporation or its suppliers or
#  licensors. Title to the Material remains with Intel Corporation or its suppliers
#  and licensors. The Material may contain trade secrets and proprietary and
#  confidential information of Intel Corporation and its suppliers and licensors,
#  and is protected by worldwide copyright and trade secret laws and treaty
#  provisions. No part of the Material may be used, copied, reproduced, modified,
#  published, uploaded, posted, transmitted, distributed, or disclosed in any way
#  without Intel's prior express written permission.
#
#  No license under any patent, copyright, trade secret or other intellectual
#  property right is granted to or conferred upon you by disclosure or delivery
#  of the Materials, either expressly, by implication, inducement, estoppel or
#  otherwise. Any license under such intellectual property rights must be
#  express and approved by Intel in writing.
#
#  Unless otherwise agreed by Intel in writing, you may not remove or alter
#  this notice or any other notice embedded in Materials by Intel or
#  Intel's suppliers or licensors in any way.
#
#  This file contains an 'Intel Peripheral Driver' and is uniquely identified as
#  "Intel Reference Module" and is licensed for Intel CPUs and chipsets under
#  the terms of your license agreement with Intel or your vendor. This file may
#  be modified by the user, subject to additional terms of the license agreement.
#
# @par Specification
#
# @par Glossary:
##
[Defines]
INF_VERSION = 0x00010017
BASE_NAME = CpuInitDxe
FILE_GUID = FC73690C-8D4A-4F8C-B7F5-BA241F316E28
VERSION_STRING = 1.0
MODULE_TYPE = DXE_DRIVER
ENTRY_POINT = InitializeCpu
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64 EBC
#

[LibraryClasses]
UefiDriverEntryPoint
ReportStatusCodeLib
DxeServicesTableLib
SynchronizationLib
HobLib
TimerLib
CpuCommonLib
SoftwareGuardLib
PreSiliconLib
ConfigBlockLib

[Packages]
MdePkg/MdePkg.dec
UefiCpuPkg/UefiCpuPkg.dec
GeminilakeSiliconPkg/GeminilakeSiliconPkg.dec
GeminilakeSiliconPkg/GeminilakeSiPrivate.dec
ClientSiliconPkg/ClientSiliconPkg.dec

[Pcd]
gSiPkgTokenSpaceGuid.PcdCpuApWakeupBufferMaxAddr
gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode    ##FSP can support APIdle Manner other than ApInHltLoop mode Post PEI

[Sources]
CpuAcpi.c
CpuInitDxe.c
CpuInitDxe.h
Exception.h
MemoryAttribute.c
MemoryAttribute.h
MpCommon.c
MpCommon.h
MpService.c
MpService.h
MtrrSync.c
SoftwareGuard.c

[sources.ia32]
Ia32/CpuAsm.asm|MSFT
Ia32/MpProc.asm|MSFT
Ia32/MchkInitAsm.asm|MSFT
Ia32/MPFuncs32.asm|MSFT
Ia32/MpCommon32.asm|MSFT
Ia32/MemoryOperation.c
Ia32/Exception.c
Ia32/MpCpu.c

[Sources.X64]
x64/cpu.asm|MSFT
x64/MpFuncs.asm|MSFT
x64/cpu.S|GCC
x64/MpFuncs.S|GCC
x64/MemoryOperation.c
x64/Exception.c
x64/MpCpu.c
x64/ProcessorDef.h
x64/VirtualMemory.h

[Protocols]
gEfiMetronomeArchProtocolGuid ## CONSUMES
gEfiCpuArchProtocolGuid ## PRODUCES
gEfiMpServiceProtocolGuid ## PRODUCES
gEfiSmmControl2ProtocolGuid ## CONSUMES
gCpuInfoProtocolGuid ## PRODUCES
gEfiLegacyBiosProtocolGuid ## CONSUMES
gCpuGlobalNvsAreaProtocolGuid ## PRODUCES
gEfiPciEnumerationCompleteProtocolGuid ## CONSUMES

[Guids]
gSmramCpuDataHeaderGuid ## UNDEFINED
gEfiEndOfDxeEventGroupGuid ## UNDEFINED
gCpuInitDataHobGuid ## UNDEFINED
gCpuStatusCodeDataTypeExceptionHandlerGuid ## UNDEFINED
gEndOfDxeBeforePciEnumEventGroupGuid ## CONSUMES

[Ppis]
gEfiSecPlatformInformation2PpiGuid ##  HOB

[Depex]
gEfiMetronomeArchProtocolGuid