// /** @file
// This package provides target side modules to support source level debug.
//
// This package provides target side modules to support source level debug.
// The target side components includes the Debug Agent Library instance
// to communicate with host side modules, Debug Communication Library and
// instances to provide the communication I/O functions between Debug Agent
// and host, PeCoffExtraActionLib instance to report symbol path information,
// etc.
//
// Copyright (c) 2010 - 2018, 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 that 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_PACKAGE_ABSTRACT            #language en-US "This package provides target side modules to support source level debug."

#string STR_PACKAGE_DESCRIPTION         #language en-US "The target side components includes the Debug Agent Library instance\n"
                                                        "to communicate with host side modules, Debug Communication Library and\n"
                                                        "instances to provide the communication I/O functions between Debug Agent\n"
                                                        "and host, PeCoffExtraActionLib instance to report symbol path information,\n"
                                                        "etc."



#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbDebugPortMemorySpaceBase_PROMPT  #language en-US "Configure USB debug port memory BAR"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbDebugPortMemorySpaceBase_HELP  #language en-US "The memory BAR of USB debug port, it may be different from the memory BAR of EHCI host controller.<BR>\n"
                                                                                                       "Note that the memory BAR address is only used before PCI bus resource allocation."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbEhciMemorySpaceBase_PROMPT  #language en-US "Configure EHCI host controller memory BAR"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbEhciMemorySpaceBase_HELP  #language en-US "The memory BAR of EHCI host controller, in which USB debug feature is enabled.<BR>\n"
                                                                                                  "Note that the memory BAR address is only used before PCI bus resource allocation."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbEhciPciAddress_PROMPT  #language en-US "Configure EHCI host controller PCI address"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbEhciPciAddress_HELP  #language en-US "The PCI address of EHCI host controller, in which USB debug feature is enabled.<BR>\n"
                                                                                             "The format of PCI address is :<BR>\n"
                                                                                             "-----------------------------------------------------------------------<BR>\n"
                                                                                             "| Bits 28..31 | Bits 20..27 | Bits 15..19 | Bits 12..14 | Bits 00..11 |<BR>\n"
                                                                                             "-----------------------------------------------------------------------<BR>\n"
                                                                                             "|      0      |     Bus     |   Device    |   Function  |      0      |<BR>\n"
                                                                                             "-----------------------------------------------------------------------<BR>\n"
                                                                                             "For the value 0x000EF000, it means the PCI address at bus 0x0, device 0x1D, function 0x7."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_ERR_80000001 #language en-US "Invalid value provided."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdExceptionsIgnoredByDebugger_PROMPT  #language en-US "Configure exception numbers not to be hooked by Debug Agent"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdExceptionsIgnoredByDebugger_HELP  #language en-US "The mask of exception numbers whose handlers would be ignored and cannot be replaced or\n"
                                                                                                       "hooked by Debug Agent Library. Masking INT1/INT3 is invalid."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdDebugLoadImageMethod_PROMPT  #language en-US "Select loading/unloading image break method"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdDebugLoadImageMethod_HELP  #language en-US "The method to issue break point to Debug Agent Library when loading/unloading image.<BR><BR>\n"
                                                                                                "1: Use I/O Port 84 to issue hardware break point<BR>\n"
                                                                                                "2: Use INT3 to issue software break point<BR>"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdDebugPortHandleBufferSize_PROMPT  #language en-US "Assign debug port buffer size"

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdDebugPortHandleBufferSize_HELP  #language en-US "The data buffer size used by debug port in debug communication library instances.\n"
                                                                                                     "Its value is not suggested to be changed in platform DSC file."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbXhciMemorySpaceBase_PROMPT  #language en-US "Configure xhci host controller memory BAR."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbXhciMemorySpaceBase_HELP  #language en-US "The memory BAR of xhci host controller, in which usb debug feature is enabled.\n"
                                                                                                  "Note that the memory BAR address is only used before Pci bus resource allocation."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbXhciPciAddress_PROMPT  #language en-US "Configure xhci host controller pci address."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbXhciPciAddress_HELP  #language en-US "The pci address of xhci host controller, in which usb debug feature is enabled.\n"
                                                                                             "The format of pci address is :<BR>\n"
                                                                                             "-----------------------------------------------------------------------<BR>\n"
                                                                                             "| Bits 28..31 | Bits 20..27 | Bits 15..19 | Bits 12..14 | Bits 00..11 |<BR>\n"
                                                                                             "-----------------------------------------------------------------------<BR>\n"
                                                                                             "|      0      |     Bus     |   Device    |   Function  |      0      |<BR>\n"
                                                                                             "-----------------------------------------------------------------------<BR>\n"
                                                                                             "For the value 0x000A0000, it means the pci address at bus 0x0, device 0x14, function 0x0."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbXhciDebugDetectTimeout_PROMPT  #language en-US "Configure debug device detection timeout value."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdUsbXhciDebugDetectTimeout_HELP  #language en-US "Per XHCI spec, software shall impose a timeout between the detection of the Debug Host\n"
                                                                                                     "connection and the DbC Run transition to 1. This PCD specifies the timeout value in microsecond."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdTransferProtocolRevision_PROMPT  #language en-US "Default revision of the debug agent transfer protocol."

#string STR_gEfiSourceLevelDebugPkgTokenSpaceGuid_PcdTransferProtocolRevision_HELP  #language en-US "The upper 16 bits indicate the major revision and the lower 16 bits indicate\n"
                                                                                                    "the minor revision.\n"
                                                                                                    "For example, a value of 0x00000004 stands for revision 0.4.\n"
                                                                                                    "Debug packet compression and decompression is supported since revision 0.4."

