7.6 angel_SWIreason_ReportException(0x18)

この SVC をアプリケーションで呼び出すことによって、例外をデバッガに直接通知できます。一般的には、実行が完了したことを通知するために ADP_Stopped_ApplicationExit が使用されます。

エントリ

エントリ時には、以下の表に示すいずれかの値に R1 が設定されます。これらの値は angel_reasons.h 内で定義されています。

ハードウェア例外が生成されるのは、その例外タイプを取得するためにデバッガ変数 vector_catch が設定されており、デバッグエージェントがその例外タイプを通知できる場合です。以下の表に、ハードウェアベクタ要因コードを示します。

表 7-1 ハードウェアベクタ要因コード

Name 16 進数値
ADP_Stopped_BranchThroughZero 0x20000
ADP_Stopped_UndefinedInstr 0x20001
ADP_Stopped_SoftwareInterrupt 0x20002
ADP_Stopped_PrefetchAbort 0x20003
ADP_Stopped_DataAbort 0x20004
ADP_Stopped_AddressException 0x20005
ADP_Stopped_IRQ 0x20006
ADP_Stopped_FIQ 0x20007

例外ハンドラでは、ハンドラチェインの最後にデフォルト動作としてこれらの SVC を使用し、例外が処理されなかったことを通知できます。以下の表に、ソフトウェア要因コードを示します。

表 7-2 ソフトウェア要因コード

Name 16 進数値
ADP_Stopped_BreakPoint 0x20020
ADP_Stopped_WatchPoint 0x20021
ADP_Stopped_StepComplete 0x20022
ADP_Stopped_RunTimeErrorUnknown *0x20023
ADP_Stopped_InternalError *0x20024
ADP_Stopped_UserInterruption 0x20025
ADP_Stopped_ApplicationExit 0x20026
ADP_Stopped_StackOverflow *0x20027
ADP_Stopped_DivisionByZero *0x20028
ADP_Stopped_OSSpecific *0x20029

この表において、値の横にある * は、その値が ARM デバッガでサポートされていないことを示しています。これらの値に対して、デバッガは Unhandled ADP_Stopped exception を通知します。

戻り値

これらの呼び出しから返される値はありません。しかし、デバッガは RDI_Execute 要求またはこれと同等の要求を実行することによって、アプリケーションの継続を要求することができます。この場合は、SVC へのエントリ時と同じ状態のレジスタを使用するか、その後のデバッガによって修正されたレジスタを使用して、実行が継続されます。

非機密扱いPDF file icon PDF 版ARM DUI0471JJ
Copyright © 2010-2013 ARM.All rights reserved.