aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/armdebug/Debugger/debug_stub.h
diff options
context:
space:
mode:
authorTC Wan2010-12-16 17:03:50 +0800
committerTC Wan2010-12-16 17:03:50 +0800
commit2e32cda30ad266069ecb9b8c93229b0269ba1547 (patch)
treef2e42e49f32cb1b748a5952b6dd59ae00f454798 /AT91SAM7S256/armdebug/Debugger/debug_stub.h
parent941a22c0adadb5098f8f33335a864fc7d0356bf5 (diff)
parent35c9bf7fc8e5f5a8176c9365566df6a9c9555494 (diff)
Merge branch 'master' of ssh://svc.cs.usm.my/~/gitrepo-bare/armdebug
Diffstat (limited to 'AT91SAM7S256/armdebug/Debugger/debug_stub.h')
-rw-r--r--AT91SAM7S256/armdebug/Debugger/debug_stub.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/AT91SAM7S256/armdebug/Debugger/debug_stub.h b/AT91SAM7S256/armdebug/Debugger/debug_stub.h
index ada5858..0b1fee4 100644
--- a/AT91SAM7S256/armdebug/Debugger/debug_stub.h
+++ b/AT91SAM7S256/armdebug/Debugger/debug_stub.h
@@ -99,7 +99,16 @@
* ARM and Thumb Breakpoint Instructions.
*/
/*@{*/
-#define BKPT32_INSTR 0xE1200070 /* ARM BKPT instruction */
+
+#define __ARM6OR7__
+
+#ifdef __ARM6OR7__
+#define BKPT32_INSTR 0xE7200070 /* ARM6 and ARM7 does not trap unused opcodes (BKPT overlap with control instructions), \
+ CPU has unpredictable behavior. Ref: Steve Furber, ARM SoC Architecture 2nd Ed, pg. 143 */
+#else
+#define BKPT32_INSTR 0xE1200070 /* ARM BKPT instruction, will work in ARMv5T and above */
+#endif
+
#define BKPT32_ENUM_MASK 0x000FFF0F /* ARM BKPT Enum Mask */
#define BKPT32_AUTO_BKPT 0x00080000 /* ARM BKPT Auto-Step Flag (for CONT support) */
#define BKPT32_MANUAL_BKPT 0x0007FF0F /* Manually inserted ARM Breakpoint */
@@ -159,7 +168,11 @@ FUNCDEF void dbg__bkpt_handler(void);
* Equivalent to GDB breakpoint() routine for ARM code
*/
FUNCDEF void dbg_breakpoint_arm(void);
+#ifdef __ARM6OR7__
+inline void dbg_breakpoint_arm(void) { asm volatile (".word 0xE727FF7F" /* (BKPT32_INSTR | BKPT32_MANUAL_BKPT) */ ); }
+#else
inline void dbg_breakpoint_arm(void) { asm volatile (".word 0xE127FF7F" /* (BKPT32_INSTR | BKPT32_MANUAL_BKPT) */ ); }
+#endif
/** dbg_breakpoint_thumb.
* Equivalent to GDB breakpoint() routine for Thumb code