cortex_m: set the debug reason to DBGRQ when NVIC_DFSR indicates EXTERNAL 57/5157/2
authorTarek BOCHKATI <tarek.bouchkati@gmail.com>
Tue, 7 May 2019 15:16:15 +0000 (17:16 +0200)
committerTomas Vanek <vanekt@fbl.cz>
Thu, 23 May 2019 21:13:41 +0000 (22:13 +0100)
By definition the EXTERNAL bit in Debug Fault Status Register indicates
that an external debug request (EDBGRQ) signal was asserted.

Usage example: this could be done by CTI in multicore devices in order to
halt all the cores together.

Change-Id: I7830455ce5da6702b7d08c8fa7bfe80e4d8a5055
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/5157
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/target/cortex_m.c
src/target/cortex_m.h

index fba832c..ce3ab09 100644 (file)
@@ -392,7 +392,9 @@ static int cortex_m_examine_debug_reason(struct target *target)
                        target->debug_reason = DBG_REASON_WATCHPOINT;
                else if (cortex_m->nvic_dfsr & DFSR_VCATCH)
                        target->debug_reason = DBG_REASON_BREAKPOINT;
-               else    /* EXTERNAL, HALTED */
+               else if (cortex_m->nvic_dfsr & DFSR_EXTERNAL)
+                       target->debug_reason = DBG_REASON_DBGRQ;
+               else    /* HALTED */
                        target->debug_reason = DBG_REASON_UNDEFINED;
        }
 
index c334862..2f29903 100644 (file)
 #define DFSR_BKPT                      2
 #define DFSR_DWTTRAP           4
 #define DFSR_VCATCH                    8
+#define DFSR_EXTERNAL          16
 
 #define FPCR_CODE 0
 #define FPCR_LITERAL 1