aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/armdebug/Debugger/debug_stub.S
diff options
context:
space:
mode:
authorTat-Chee Wan (USM)2011-03-18 12:52:40 +0800
committerTat-Chee Wan (USM)2011-03-18 12:52:40 +0800
commit52de8367e37b30bb64b86967354acf7d303e5725 (patch)
tree951e890f77bdb77a5555b04e1fae34baf8df6330 /AT91SAM7S256/armdebug/Debugger/debug_stub.S
parent8945b4e00b5122619e3f5b65ae8294d7a50350d8 (diff)
parent51cf36077885f26e325739a60d45f822287a551f (diff)
Merge branch 'master' of ssh://svc.cs.usm.my/~/gitrepo-bare/armdebug
Diffstat (limited to 'AT91SAM7S256/armdebug/Debugger/debug_stub.S')
-rw-r--r--AT91SAM7S256/armdebug/Debugger/debug_stub.S9
1 files changed, 8 insertions, 1 deletions
diff --git a/AT91SAM7S256/armdebug/Debugger/debug_stub.S b/AT91SAM7S256/armdebug/Debugger/debug_stub.S
index 29e7814..5633db5 100644
--- a/AT91SAM7S256/armdebug/Debugger/debug_stub.S
+++ b/AT91SAM7S256/armdebug/Debugger/debug_stub.S
@@ -400,9 +400,16 @@ debug_armComplexCCTable:
*/
cCommHandleDebug:
push {r0-r3} /* store all argX registers */
- bl dbg__copyNxtDebugMsg /* setup Debugger Message Buffers, validate input */
+ bl dbg__copyNxtDebugMsg /* setup Debugger Message Buffers, validate input, CPSR returned in R0 */
+ and r0, r0, #CPSR_MODE /* Check Current Mode */
+ cmp r0, #MODE_ABT /* Debug Mode Check (Flags set) */
pop {r0-r3} /* restore all values */
+
+ /* If we're in ABT (Abort) mode, this means that we're already running the Debugger */
+ beq _in_debug
+ /* Else, we're in normal operation mode (SVC), or other mode (??!) and need to force a switch to Debug mode */
dbg__bkpt_thumb
+_in_debug:
mov r0, #0 /* FIXME: Return Status */
bx lr
#endif