## @file
#  Base Library implementation for X64 UnixPkg. X64 code writes CR3 so to
#  not change MdeModulePkg DxeIpl we need a UnixPkg copy of the BaseLib.
#  
#  Currently I'm debugging UnixPkg with SVR V ABI so there are some 
#   temp changes for that too.
#
#
#  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
#  Portions copyright (c) 2008 - 2009, Apple Inc. 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                      = BaseLib
  FILE_GUID                      = 25A41BF7-7718-4e9a-9A7E-50DC324929FD
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = BaseLib 

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM
#

[Sources]
  CheckSum.c
  SwitchStack.c
  SwapBytes64.c
  SwapBytes32.c
  SwapBytes16.c
  LongJump.c
  SetJump.c
  RShiftU64.c
  RRotU64.c
  RRotU32.c
  MultU64x64.c
  MultU64x32.c
  MultS64x64.c
  ModU64x32.c
  LShiftU64.c
  LRotU64.c
  LRotU32.c
  LowBitSet64.c
  LowBitSet32.c
  HighBitSet64.c
  HighBitSet32.c
  GetPowerOfTwo64.c
  GetPowerOfTwo32.c
  DivU64x64Remainder.c
  DivU64x32Remainder.c
  DivU64x32.c
  DivS64x64Remainder.c
  ARShiftU64.c
  BitField.c
  CpuDeadLoop.c
  Cpu.c
  LinkedList.c
  String.c
  BaseLibInternals.h


[Sources.X64]
  X64/Thunk16.asm
  X64/CpuPause.asm
  X64/EnableDisableInterrupts.asm
  X64/DisableInterrupts.asm
  X64/EnableInterrupts.asm
  X64/FlushCacheLine.asm
  X64/Invd.asm
  X64/Wbinvd.asm
  X64/DisablePaging64.asm
  X64/Mwait.asm
  X64/Monitor.asm
  X64/ReadPmc.asm
  X64/ReadTsc.asm
  X64/WriteMm7.asm
  X64/WriteMm6.asm
  X64/WriteMm5.asm
  X64/WriteMm4.asm
  X64/WriteMm3.asm
  X64/WriteMm2.asm
  X64/WriteMm1.asm
  X64/WriteMm0.asm
  X64/ReadMm7.asm
  X64/ReadMm6.asm
  X64/ReadMm5.asm
  X64/ReadMm4.asm
  X64/ReadMm3.asm
  X64/ReadMm2.asm
  X64/ReadMm1.asm
  X64/ReadMm0.asm
  X64/FxRestore.asm
  X64/FxSave.asm
  X64/WriteLdtr.asm
  X64/ReadLdtr.asm
  X64/WriteIdtr.asm
  X64/ReadIdtr.asm
  X64/WriteGdtr.asm
  X64/ReadGdtr.asm
  X64/ReadTr.asm
  X64/ReadSs.asm
  X64/ReadGs.asm
  X64/ReadFs.asm
  X64/ReadEs.asm
  X64/ReadDs.asm
  X64/ReadCs.asm
  X64/WriteDr7.asm
  X64/WriteDr6.asm
  X64/WriteDr5.asm
  X64/WriteDr4.asm
  X64/WriteDr3.asm
  X64/WriteDr2.asm
  X64/WriteDr1.asm
  X64/WriteDr0.asm
  X64/ReadDr7.asm
  X64/ReadDr6.asm
  X64/ReadDr5.asm
  X64/ReadDr4.asm
  X64/ReadDr3.asm
  X64/ReadDr2.asm
  X64/ReadDr1.asm
  X64/ReadDr0.asm
  X64/WriteCr4.asm
  X64/WriteCr3.asm
  X64/WriteCr2.asm
  X64/WriteCr0.asm
  X64/ReadCr4.asm
  X64/ReadCr3.asm
  X64/ReadCr2.asm
  X64/ReadCr0.asm
  X64/ReadEflags.asm
  X64/CpuIdEx.asm
  X64/CpuId.asm
  X64/LongJump.asm
  X64/SetJump.asm
  X64/SwitchStack.asm
  X64/EnableCache.asm
  X64/DisableCache.asm

  X64/CpuBreakpoint.c | MSFT 
  X64/WriteMsr64.c | MSFT 
  X64/ReadMsr64.c | MSFT 

  X64/CpuBreakpoint.asm | INTEL 
  X64/WriteMsr64.asm | INTEL 
  X64/ReadMsr64.asm | INTEL 

  X64/Non-existing.c
  Math64.c
  Unaligned.c
  X86WriteIdtr.c
  X86WriteGdtr.c
  X86Thunk.c
  X86ReadIdtr.c
  X86ReadGdtr.c
  X86Msr.c
  X86MemoryFence.c | MSFT
  X86MemoryFence.c | INTEL
  X86GetInterruptState.c
  X86FxSave.c
  X86FxRestore.c
  X86EnablePaging64.c
  X86EnablePaging32.c
  X86DisablePaging64.c
  X86DisablePaging32.c
  X64/GccInline.c | GCC
  X64/Thunk16.S | GCC 
  X64/SwitchStack.S | GCC 
  X64/SetJump.S | GCC 
  X64/LongJump.S | GCC 
  X64/EnableDisableInterrupts.S | GCC 
  X64/DisablePaging64.S | GCC 
  X64/CpuId.S | GCC 
  X64/CpuIdEx.S | GCC 
  X64/EnableCache.S | GCC
  X64/DisableCache.S | GCC
  ChkStkGcc.c  | GCC 


[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  PcdLib
  DebugLib
  BaseMemoryLib

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength
  gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength
  gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength
  gEfiMdePkgTokenSpaceGuid.PcdVerifyNodeInList