## @file
#  Instance of CPU Library for various architecture.
#
#  CPU Library implemented using ASM functions for IA32, X64, ARM, AARCH64,
#  PAL CALLs for IPF, and empty functions for EBC.
#
#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
#  Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
#  Portions copyright (c) 2011 - 2013, ARM Ltd. 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                      = BaseCpuLib
  MODULE_UNI_FILE                = BaseCpuLib.uni
  FILE_GUID                      = 4FBD2538-249C-4b50-8F4A-A9E66609CBF6
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = CpuLib


#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
#

[Sources.IA32]
  Ia32/CpuSleep.c | MSFT
  Ia32/CpuFlushTlb.c | MSFT

  Ia32/CpuSleep.nasm| INTEL
  Ia32/CpuFlushTlb.nasm| INTEL

  Ia32/CpuSleepGcc.c | GCC
  Ia32/CpuFlushTlbGcc.c | GCC

[Sources.X64]
  X64/CpuFlushTlb.nasm
  X64/CpuSleep.nasm

  X64/CpuSleep.nasm| GCC
  X64/CpuSleep.S | GCC
  X64/CpuFlushTlb.nasm| GCC
  X64/CpuFlushTlb.S | GCC

[Sources.IPF]
  Ipf/CpuFlushTlb.s
  Ipf/CpuSleep.c

[Sources.EBC]
  Ebc/CpuSleepFlushTlb.c

[Sources.ARM]
  Arm/CpuFlushTlb.asm | RVCT
  Arm/CpuSleep.asm    | RVCT
  Arm/CpuFlushTlb.asm | MSFT
  Arm/CpuSleep.asm    | MSFT
  Arm/CpuFlushTlb.S   | GCC
  Arm/CpuSleep.S      | GCC

[Sources.AARCH64]
  AArch64/CpuFlushTlb.S   | GCC
  AArch64/CpuSleep.S      | GCC
  AArch64/CpuFlushTlb.asm | MSFT
  AArch64/CpuSleep.asm    | MSFT

[Packages]
  MdePkg/MdePkg.dec


[LibraryClasses.IPF]
  PalLib
  BaseLib

