// /** @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 - 2014, 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.
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Installs Debug Support protocol for the selected processor"

#string STR_MODULE_DESCRIPTION          #language en-US "This driver provides the capabilities for debug-agent to gain control of the machine when certain types of events occur, i.e. breakpoint, processor exceptions, etc. It also provides debug-agent to periodically gain control during operation of the machine to check for asynchronous commands from the host."

