5.5.2. angel_SWIreason_ReportException (0x18)

This SWI can be called by an application to report an exception to the debugger directly. The most common use is to report that execution has completed, using ADP_Stopped_ApplicationExit.

Entry

On entry r1 is set to one of the values listed in Table 5.3 and Table 5.4. These values are defined in adp.h.

The hardware exceptions are generated if the debugger variable $vector_catch is set to catch that exception type, and the debug agent is capable of reporting that exception type. Angel cannot report exceptions for interrupts on the vector it uses itself.

Table 5.3. Hardware vector reason codes

Name (#defined in adp.h)Hexadecimal value
ADP_Stopped_BranchThroughZero0x20000
ADP_Stopped_UndefinedInstr0x20001
ADP_Stopped_SoftwareInterrupt0x20002
ADP_Stopped_PrefetchAbort0x20003
ADP_Stopped_DataAbort0x20004
ADP_Stopped_AddressException0x20005
ADP_Stopped_IRQ 0x20006
ADP_Stopped_FIQ0x20007

Exception handlers can use these SWIs at the end of handler chains as the default action, to indicate that the exception has not been handled.

Table 5.4. Software reason codes

Name (#defined in adp.h)Hexadecimal value
ADP_Stopped_BreakPoint0x20020
ADP_Stopped_WatchPoint0x20021
ADP_Stopped_StepComplete0x20022
ADP_Stopped_RunTimeErrorUnknown*0x20023
ADP_Stopped_InternalError*0x20024
ADP_Stopped_UserInterruption0x20025
ADP_Stopped_ApplicationExit0x20026
ADP_Stopped_StackOverflow*0x20027
ADP_Stopped_DivisionByZero*0x20028
ADP_Stopped_OSSpecific*0x20029

* next to values in Table 5.4 indicates that the value is not supported by the ARM debuggers. The debugger reports an Unhandled ADP_Stopped exception for these values.

Return

No return is expected from these calls. However, it is possible for the debugger to request that the application continue by performing an RDI_Execute request or equivalent. In this case, execution continues with the registers as they were on entry to the SWI, or as subsequently modified by the debugger.

Copyright © 1999-2001 ARM Limited. All rights reserved.ARM DUI0058D
Non-Confidential