## @file
#  Instance of I/O Library using KVM/ARM safe assembler routines
#
#  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
#  Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
#  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
#  Copyright (c) 2018, Linaro, 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                    = 0x0001001A
  BASE_NAME                      = BaseIoLibIntrinsicArmVirt
  MODULE_UNI_FILE                = BaseIoLibIntrinsicArmVirt.uni
  FILE_GUID                      = 217102b4-b465-4a1d-a2de-93dd385ec480
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = IoLib

#
#  VALID_ARCHITECTURES           = ARM AARCH64
#

[Sources]
  IoLibMmioBuffer.c
  BaseIoLibIntrinsicInternal.h
  IoHighLevel.c

[Sources.ARM]
  IoLibArmVirt.c
  Arm/ArmVirtMmio.S       | GCC
  Arm/ArmVirtMmio.asm     | RVCT

[Sources.AARCH64]
  IoLibArmVirt.c
  AArch64/ArmVirtMmio.S   | GCC
  AArch64/ArmVirtMmio.asm | MSFT

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  DebugLib
  BaseLib
