summaryrefslogtreecommitdiff
path: root/Debugger/debug_macros.h
diff options
context:
space:
mode:
authorTat-Chee Wan (USM)2011-03-18 18:41:36 +0800
committerTat-Chee Wan (USM)2011-03-18 18:41:36 +0800
commit6d55f0fda6820e343eac219dd3a338fc44a26618 (patch)
tree25c61d6d7ca65b3c1a7dc5a6677033eb3cbd81a8 /Debugger/debug_macros.h
parent6cfc6ae6394d24a03be2ccb6654f0722ca3cea7c (diff)
second attempt at determining whether we are in debug mode
Checking CPSR does not seem to be reliable in cCommHandleDebug which runs in Thumb mode. Modified to use explicit mode variable for keeping track of our operating mode (normal vs. debug).
Diffstat (limited to 'Debugger/debug_macros.h')
-rw-r--r--Debugger/debug_macros.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/Debugger/debug_macros.h b/Debugger/debug_macros.h
index dc1efba..5af75fd 100644
--- a/Debugger/debug_macros.h
+++ b/Debugger/debug_macros.h
@@ -251,7 +251,7 @@
*/
.macro _dbg_getstate reg
ldr \reg, =debug_state
- ldr \reg, [\reg]
+ ldrb \reg, [\reg]
.endm
/* _dbg_setstate
@@ -260,9 +260,30 @@
* r0, r1: destroyed
*/
.macro _dbg_setstate state
- ldr r0, =\state
+ mov r0, #\state
ldr r1, =debug_state
- str r0, [r1]
+ strb r0, [r1]
+ .endm
+
+/* _dbg_getmode
+ * Get Debugger Mode
+ * On exit:
+ * reg: Debugger Mode (Boolean)
+ */
+ .macro _dbg_getmode reg
+ ldr \reg, =debug_mode
+ ldrb \reg, [\reg]
+ .endm
+
+/* _dbg_setmode
+ * Set Debugger Mode to given value
+ * On exit:
+ * r0, r1: destroyed
+ */
+ .macro _dbg_setmode mode
+ mov r0, #\mode
+ ldr r1, =debug_mode
+ strb r0, [r1]
.endm
/* _dbg_getcurrbkpt_index