📄 adp.h
字号:
#define ADP_Info_Points_Mask (1 << 8)
/* Multi-threaded support only - thread specific breakpoints. */
#define ADP_Info_Points_ThreadBreak (1 << 9)
/* Multi-threaded support only - thread specific watchpoints. */
#define ADP_Info_Points_ThreadWatch (1 << 10)
/* Allows conditional breakpoints. */
#define ADP_Info_Points_Conditionals (1 << 11)
/* Break- and watch-points can be interrogated */
#define ADP_Info_Points_Status (1 << 12)
#define ADP_Info_Step ADPSUBREASON(CI_HADP,3)
/* ADP_Info_Step
* -------------
* Summary: Returns a 32bit wide bitmask of the single-stepping
* capabilities of the target debug agent.
*
* Arguments:
* Send: ()
* Return: (word status, word stepinfo)
*
* 'status' returns RDIError_NoError on success, or non-zero to indicate
* some kind of error.
* 'stepinfo' is a 32bit wide bitmask described in detail below. Note that
* only 3 bits are used.
*/
/* 'stepinfo':- */
/* Single-stepping of more than one instruction is possible. */
#define ADP_Info_Step_Multiple (1 << 0)
/* Single-stepping until next direct PC change is possible. */
#define ADP_Info_Step_PCChange (1 << 1)
/* Single-stepping of a single instruction is possible. */
#define ADP_Info_Step_Single (1 << 2)
#define ADP_Info_MMU ADPSUBREASON(CI_HADP,4)
/* ADP_Info_MMU
* ------------
* Summary: Returns information about the memory management system (if
* any).
*
* Arguments:
* Send: ()
* Return: (word status, word meminfo)
*
* 'status' returns RDIError_NoError to indicate success or non-zero to
* indicate some kind of error.
* 'meminfo' should be a 32bit unique ID, or zero if there is no MMU
* support on the target.
*/
#define ADP_Info_SemiHosting ADPSUBREASON(CI_HADP,5)
/* ADP_Info_SemiHosting
* --------------------
* Summary: This message is used to check whether semi-hosting info calls
* are available on the target.
*
* Arguments:
* Send: ()
* Return: (word status)
*
* 'status' returns RDIError_NoError if semi-hosting info calls are available,
* non-zero otherwise.
*/
#define ADP_Info_CoPro ADPSUBREASON(CI_HADP,6)
/* ADP_Info_CoPro
* --------------
* Summary: This message checks whether CoProcessor info calls are
* supported.
*
* Arguments:
* Send: ()
* Return: (word status)
*
* 'status' returns RDIError_NoError to indicate these facilities
* are supported, non-zero otherwise.
*/
#define ADP_Info_Cycles ADPSUBREASON(CI_HADP,7)
/* ADP_Info_Cycles
* ---------------
* Summary: Returns the number of instructions and cycles executed since
* the target was initialised.
*
* Arguments:
* Send: ()
* Return: (word status, word ninstr, word Scycles, word Ncycles,
* word Icycles, word Ccycles, word Fcycles)
*
* 'status' is RDIError_NoError to indicate success, or non-zero if there
* is no target support for gathering cycle count information.
* 'ninstr' is the number of instructions executed.
* 'Scycles' is the number of S-cycles executed.
* 'Ncycles' is the number of N-cycles executed.
* 'Icycles' is the number of I-cycles executed.
* 'Ccycles' is the number of C-cycles executed.
* 'Fcycles' is the number of F-cycles executed.
*/
#define ADP_Info_DescribeCoPro ADPSUBREASON(CI_HADP,8)
/* ADP_Info_DescribeCoPro
* ----------------------
* Summary: Describe the registers of a coprocessor. Use only if
* ADP_Info_CoPro return RDIError_NoError.
*
* Arguments:
* Send: Arguments of the form:
* (byte cpno, byte rmin, byte rmax, byte nbytes, byte access,
* byte cprt_r_b0, byte cprt_r_b1, byte cprt_w_b0, byte cprt_w_b1)
* And a terminating byte = 0xff. Must be within maximum buffer size.
* Return: (word status)
*
* 'cpno' is the number of the coprocessor to be described.
* 'rmin' is the bottom of a range of registers with the same description.
* 'rmax' is the top of a range of registers with the same description.
* 'nbytes' is the size of the register.
* 'access' describes access to the register and is described in more detail
* below.
*
* If bit 2 of access is set:-
* 'cprt_r0' provides bits 0 to 7, and
* 'cprt_r1' provides bits 16 to 23 of a CPRT instruction to read the
* register.
* 'cprt_w0' provides bits 0 to 7, and
* 'cprt_w1' provides bits 16 to 23 of a CPRT instruction to write the
* register.
*
* Otherwise, 'cprt_r0' provides bits 12 to 15, and 'cprt_r1' bit 22 of CPDT
* instructions to read and write the register ('cprt_w0' and 'cprt_w1' are
* junk).
*/
/* 'access':- */
/* Readable. */
#define ADP_Info_DescribeCoPro_Readable (1 << 0)
/* Writeable. */
#define ADP_Info_DescribeCoPro_Writeable (1 << 1)
/* Registers read or written via CPDT instructions (else CPRT) with this
bit set. */
#define ADP_Info_DescribeCoPro_CPDT (1 << 2)
#define ADP_Info_RequestCoProDesc ADPSUBREASON(CI_HADP,9)
/* ADP_Info_RequestCoProDesc
* -------------------------
* Summary: Requests a description of the registers of a coprocessor. Use
* only if ADP_Info_CoPro return RDIError_NoError.
*
* Arguments:
* Send: (byte cpno)
* Return: Arguments of the form:-
* (word status, byte rmin, byte rmax, byte nbytes, byte access)
* Followed by a terminating byte = 0xFF. Must be within maximum
* buffer size.
* 'cpno' is the number of the coprocessor to describe.
* 'status' is RDIError_NoError to indicate success, non-zero otherwise.
* 'rmin' is the bottom of a range of registers with the same description.
* 'rmax' is the top of a range of registers with the same description.
* 'nbytes' is the size in bytes of the register(s).
* 'access' is as above in ADP_Info_DescribeCoPro.
*/
#define ADP_Info_AngelBufferSize ADPSUBREASON(CI_HADP,10)
/* ADP_Info_AngelBufferSize
* ------------------------
* Summary: Returns the Angel buffer sizes.
*
* Arguments:
* Send: ()
* Return: (word status, word defaultsize, word maxsize)
*
* 'status' returns RDIError_NoError to indicate success or non-zero to
* indicate some kind of error.
* 'defaultsize' is the default Angel ADP buffer size in bytes. This is
* at least 256 bytes.
* 'maxsize' is the largest Angel ADP buffer size in bytes. This will be
* greater than or equal to defaultsize. The target will accept ADP messages
* of up to this length for download, etc.
*
* Was DownLoadSize in RDP/RDI world. This is the amount that the target
* should transmit in a single operation. This should now be the Angel
* buffer size. This information is also given in the ADP_Booted message.
*
* NOTE: The value returned should be the DATASIZE and *NOT* BUFFERDEFSIZE.
* This is needed to ensure that the transport protocol information
* can be wrapped around the data.
*/
#define ADP_Info_ChangeableSHSWI ADPSUBREASON(CI_HADP,11)
/* ADP_Info_ChangeableSHSWI
* ------------------------
* Summary: This message is used to check whether it is possible to change
* which SWI's are used for semihosting.
*
* Arguments:
* Send: ()
* Return: (word status)
*
* 'status' returns RDIError_NoError if semi-hosting info calls are available,
* non-zero otherwise.
*/
#define ADP_Info_CanTargetExecute ADPSUBREASON(CI_HADP,12)
/* ADP_Info_CanTargetExecute
* -------------------------
* Summary: This message is used to see if the target is currently in
* an executable state. Typically this is called after the debugger
* initialises. If a non-error statis is returned then the user is
* allowed to 'go' immediately.
*
* Arguments:
* Send: ()
* Return: (word status)
*
* 'status' returns RDIError_NoError if target is ready to execute.
* other values indicate why it cannot execute.
*/
#define ADP_Info_AgentEndianess ADPSUBREASON(CI_HADP,13)
/* ADP_Info_AgentEndianess
* -------------------------
* Summary: This message is used to determine the endianess of the
* debug agent
* Arguments:
* Send: ()
* Return: (word status)
*
* status should be RDIError_LittleEndian or RDIError_BigEndian
* any other value indicates the target does not support this
* request, so the debugger will have to make a best guess, which
* probably means only allow little endian loadagenting.
*/
#define ADP_Info_CanAckHeartbeat ADPSUBREASON(CI_HADP,14)
/* ADP_Info_CanAckHeartbeat
* --------------
* Summary: This message checks whether heartbeat messages are
* acknowledged.
*
* Arguments:
* Send: ()
* Return: (word status)
*
* 'status' returns RDIError_NoError to indicate heartbeats are
* acknowledged, non-zero otherwise. (NOTE: some targets may not
* support the call).
*/
#define ADP_Control ADPREASON(CI_HADP,2)
/* This message allows for the state of the debug agent to be
* manipulated by the host.
*/
/* The following are sub reason codes to ADP control, the first parameter
* is the sub reason code which defines the format of subsequent parameters.
*
* word sub reason code
*/
#define ADP_Ctrl_NOP ADPSUBREASON(CI_HADP,0)
/* ADP_Ctrl_NOP
* ------------
* Summary: This message is used to check that ADP_Ctrl messages are
* supported.
*
* Arguments:
* Send: ()
* Return: (word status)
*
* 'status' is RDIError_NoError to indicate ADP_Ctrl messages are
* supported, non-zero otherwise.
*/
#define ADP_Ctrl_VectorCatch ADPSUBREASON(CI_HADP,1)
/* ADP_Ctrl_VectorCatch
* --------------------
* Summary: Specifies which hardware exceptions should be reported to the
* debugger.
*
* Arguments:
* Send: (word bitmap)
* Return: (word status)
*
* 'bitmap' is a bit-mask of exceptions to be reported, described in more
* detail below. A set bit indicates that the exception should be
* reported to the debugger, a clear bit indicates that the corresponding
* exception vector should be taken.
* 'status' is RDIError_NoError to indicate success, non-zero otherwise.
*/
/* 'bitmap':- */
/* Reset(branch through zero). */
#define ADP_Ctrl_VectorCatch_BranchThroughZero (1 << 0)
/* Undefined Instruction. */
#define ADP_Ctrl_VectorCatch_UndefinedInstr (1 << 1)
/* Software Interrupt. */
#define ADP_Ctrl_VectorCatch_SWI (1 << 2)
/* Prefetch Abort. */
#define ADP_Ctrl_VectorCatch_PrefetchAbort (1 << 3)
/* Data Abort. */
#define ADP_Ctrl_VectorCatch_DataAbort (1 << 4)
/* Address Exception. */
#define ADP_Ctrl_VectorCatch_AddressException (1 << 5)
/* Interrupt Request. */
#define ADP_Ctrl_VectorCatch_IRQ (1 << 6)
/* Fast Interrupt Request. */
#define ADP_Ctrl_VectorCatch_FIQ (1 << 7)
/* Error. */
#define ADP_Ctrl_VectorCatch_Error (1 << 8)
#define ADP_Ctrl_PointStatus_Watch ADPSUBREASON(CI_HADP,2)
/* ADP_Ctrl_PointStatus_Watch
* --------------------------
* Summary: Returns the hardware resource number and the type of that
* resource when given a watchpoint handle. Should only be called if
* the value returned by ADP_Info_Points had ADP_Info_Points_Status set.
*
* Arguments:
* Send: (word handle)
* Return: (word status, word hwresource, word type)
*
* 'handle' is a handle to a watchpoint.
* 'status' is RDIError_NoError to indicate success, non-zero otherwise.
* 'hwresource' is the hardware resource number. !!!!!
* 'type' is the type of the resource.
*/
#define ADP_Ctrl_PointStatus_Break ADPSUBREASON(CI_HADP,3)
/* ADP_Ctrl_PointStatus_Break
* --------------------------
* Summary: Returns the hardware resource number and the type of that
* resource when given a breakpoint handle. Should only be called if
* the value returned by ADP_Info_Points had ADP_Info_Points_Status set.
*
* Arguments:
* Send: (word handle)
* Return: (word status, word hwresource, word type)
*
* 'handle' is a handle to a breakpoint.
* 'status' is RDIError_NoError to indicate success, non-zero otherwise.
* 'hwresource' is the hardware resource number.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -