aboutsummaryrefslogtreecommitdiff
path: root/Debugger/undef_handler.S
diff options
context:
space:
mode:
authorTat-Chee Wan (USM)2011-04-01 11:55:13 +0800
committerTat-Chee Wan (USM)2011-04-01 11:55:13 +0800
commit90a30d6380d7e1ffd7cacf3d18423ebe111a6859 (patch)
treeda16fdf0c97ac93c49ba2ff6d0ae7e13f610fe01 /Debugger/undef_handler.S
parent74f6599332a09493f93c1c0893da87581ca91ed8 (diff)
fixed thumb breakpoint detection logic in undef handler
Thumb breakpoints were not handled properly in the Undef instruciton handler previously. This fixes the problem.
Diffstat (limited to 'Debugger/undef_handler.S')
-rw-r--r--Debugger/undef_handler.S3
1 files changed, 2 insertions, 1 deletions
diff --git a/Debugger/undef_handler.S b/Debugger/undef_handler.S
index b980a5d..23de609 100644
--- a/Debugger/undef_handler.S
+++ b/Debugger/undef_handler.S
@@ -87,6 +87,7 @@ _is_thumb:
teq r2, r1
bne default_undef_handler
ldr r1, =BKPT16_ENUM_MASK /* get Thumb BKPT Enum Mask */
+ ldr lr, =dbg__thumb_bkpt_handler /* handle BKPT, BKPT index in r0 */
b _exit_undef_handler
_is_arm:
ldr r0, [r0] /* load UNDEF instruction into r0 */
@@ -96,10 +97,10 @@ _is_arm:
teq r2, r1
bne default_undef_handler
ldr r1, =BKPT32_ENUM_MASK /* get ARM BKPT Enum Mask */
+ ldr lr, =dbg__arm_bkpt_handler /* handle BKPT, BKPT index in r0 */
_exit_undef_handler:
and r0, r1, r0 /* Keep index value */
msr cpsr_c, #(MODE_ABT) /* Configure Abort Mode */
- ldr lr, =dbg__arm_bkpt_handler /* handle BKPT, BKPT index in r0 */
mov pc, lr /* Invoke Debugger State (Supervisor Mode) */
.global resume_execution