summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Debugger/debug_stub.S2
-rw-r--r--Debugger/undef_handler.S4
2 files changed, 4 insertions, 2 deletions
diff --git a/Debugger/debug_stub.S b/Debugger/debug_stub.S
index d374cbe..aaf1c85 100644
--- a/Debugger/debug_stub.S
+++ b/Debugger/debug_stub.S
@@ -720,6 +720,8 @@ dbg__bkpt_offset_outofrange:
dbg__bkpt_waitCMD:
/* We enter this code section when a Breakpoint Triggers */
_dbg_setmode TRUE /* Debug Mode = True */
+ msr cpsr_c, #(MODE_ABT) /* Re-enable Interrupts */
+
_dbg_getstate r0
cmp r0, #DBG_CONFIGURED
blo dbg__bkpt_waitCMD_cont /* Not configured yet, don't send Breakpoint Signal Response */
diff --git a/Debugger/undef_handler.S b/Debugger/undef_handler.S
index f185fbd..11d3cbc 100644
--- a/Debugger/undef_handler.S
+++ b/Debugger/undef_handler.S
@@ -100,8 +100,8 @@ _is_arm:
ldr r2, =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 */
- mov pc, r2 /* Invoke Debugger State (Supervisor Mode) */
+ msr cpsr_c, #(MODE_ABT | CPSR_FIQ | CPSR_IRQ) /* Switch to Abort Mode, Disable Interrupts */
+ mov pc, r2 /* Invoke Debugger */
.global resume_execution