## @file
#  Last PEIM executed in PEI phase to load DXE Core from a Firmware Volume.
#
#  This module produces a special PPI named the DXE Initial Program Load (IPL)
#  PPI to discover and dispatch the DXE Foundation and components that are
#  needed to run the DXE Foundation.
#
#  Copyright (c) 2006 - 2017, 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                      = DxeIpl
  MODULE_UNI_FILE                = DxeIpl.uni
  FILE_GUID                      = 86D70125-BAA3-4296-A62F-602BEBBB9081
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = PeimInitializeDxeIpl

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

[Sources]
  DxeIpl.h
  DxeLoad.c

[Sources.Ia32]
  X64/VirtualMemory.h
  X64/VirtualMemory.c
  Ia32/DxeLoadFunc.c
  Ia32/IdtVectorAsm.nasm
  Ia32/IdtVectorAsm.asm
  Ia32/IdtVectorAsm.S

[Sources.X64]
  X64/VirtualMemory.h
  X64/VirtualMemory.c
  X64/DxeLoadFunc.c    

[Sources.IPF]
  Ipf/DxeLoadFunc.c

[Sources.EBC]
  Ebc/DxeLoadFunc.c

[Sources.ARM, Sources.AARCH64]
  Arm/DxeLoadFunc.c

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

[Packages.ARM, Packages.AARCH64]
  ArmPkg/ArmPkg.dec

[LibraryClasses]
  PcdLib
  MemoryAllocationLib
  BaseMemoryLib
  ExtractGuidedSectionLib
  UefiDecompressLib
  ReportStatusCodeLib
  PeiServicesLib
  HobLib
  BaseLib
  PeimEntryPoint
  DebugLib
  DebugAgentLib
  PeiServicesTablePointerLib

[LibraryClasses.ARM, LibraryClasses.AARCH64]
  ArmMmuLib

[Ppis]
  gEfiDxeIplPpiGuid                 ## PRODUCES
  gEfiPeiDecompressPpiGuid          ## PRODUCES
  gEfiEndOfPeiSignalPpiGuid         ## SOMETIMES_PRODUCES # Not produced on S3 boot path
  gEfiPeiReadOnlyVariable2PpiGuid   ## SOMETIMES_CONSUMES
  gEfiPeiLoadFilePpiGuid            ## SOMETIMES_CONSUMES
  gEfiPeiS3Resume2PpiGuid           ## SOMETIMES_CONSUMES # Consumed on S3 boot path
  gEfiPeiRecoveryModulePpiGuid      ## SOMETIMES_CONSUMES # Consumed on recovery boot path
  ## SOMETIMES_CONSUMES
  ## UNDEFINED # HOB
  gEfiVectorHandoffInfoPpiGuid
  gEfiPeiMemoryDiscoveredPpiGuid    ## SOMETIMES_CONSUMES

[Guids]
  ## SOMETIMES_CONSUMES ## Variable:L"MemoryTypeInformation"
  ## SOMETIMES_PRODUCES ## HOB
  gEfiMemoryTypeInformationGuid

[FeaturePcd.IA32]
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode      ## CONSUMES

[FeaturePcd.X64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables       ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress ## CONSUMES

[Pcd.IA32,Pcd.X64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable                      ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask    ## CONSUMES

[Pcd.IA32,Pcd.X64,Pcd.ARM,Pcd.AARCH64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack               ## SOMETIMES_CONSUMES

[Depex]
  gEfiPeiLoadFilePpiGuid AND gEfiPeiMasterBootModePpiGuid

#
# [BootMode]
#  S3_RESUME                        ## SOMETIMES_CONSUMES
#  RECOVERY_FULL                    ## SOMETIMES_CONSUMES
#
#
# [Hob]
# MEMORY_ALLOCATION                 ## SOMETIMES_PRODUCES # MEMORY_ALLOCATION_MODULE for DxeCore
# MEMORY_ALLOCATION                 ## SOMETIMES_PRODUCES # New Stack HoB   
# MEMORY_ALLOCATION                 ## SOMETIMES_PRODUCES # Old Stack HOB
#
# [Hob.IPF]
# MEMORY_ALLOCATION                 ## SOMETIMES_PRODUCES # MEMORY_ALLOCATION_BSP_STORE
#

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