## @file
# This driver installs Debug Support protocol for the selected processor.
#
# This driver provides the capabilities for debug-agent to gain control of the machine
# when certain types of events occur, i.e. breakpoint, processor execptions, etc. It also
# provides debug-agent to periodically gain control during operation of the machine to
# check for asynchronous commands form the host.
#
# Copyright (c) 2006 - 2012, Intel Corporation. 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                      = DebugSupportDxe
  FILE_GUID                      = 911D584C-35F7-4955-BEF9-B452769DDC3A
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeDebugSupportDriver

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  DebugSupport.c

[Sources.Ia32]
  Ia32/DebugSupport.h
  Ia32/PlDebugSupport.c
  Ia32/PlDebugSupport.h
  Ia32/PlDebugSupportIa32.c
  Ia32/AsmFuncs.S
  Ia32/AsmFuncs.asm

[Sources.X64]
  Ia32/DebugSupport.h
  Ia32/PlDebugSupport.c
  X64/PlDebugSupport.h
  X64/PlDebugSupportX64.c
  X64/AsmFuncs.S
  X64/AsmFuncs.asm

[Sources.IPF]
  Ipf/PlDebugSupport.h
  Ipf/PlDebugSupport.c
  Ipf/Ds64Macros.i
  Ipf/Common.i
  Ipf/AsmFuncs.s


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiDriverEntryPoint
  DebugLib

[LibraryClasses.IA32]
  BaseLib

[LibraryClasses.X64]
  BaseLib


[Protocols]
  gEfiLoadedImageProtocolGuid                   ## CONSUMED
  gEfiDebugSupportProtocolGuid                  ## PRODUCED


[Depex]
  TRUE

