summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTat-Chee Wan (USM)2011-04-01 10:38:17 +0800
committerTat-Chee Wan (USM)2011-04-01 10:38:17 +0800
commit74f6599332a09493f93c1c0893da87581ca91ed8 (patch)
treedc0c01743821e986091cba6845fccaed2de3884b
parent70c877428aa27b2403a2f0046d8f6895d7d05d2d (diff)
update armdebug to handle ctrl-c messages
-rw-r--r--Debugger/debug_comm.S3
-rw-r--r--Debugger/debug_stub.S11
2 files changed, 12 insertions, 2 deletions
diff --git a/Debugger/debug_comm.S b/Debugger/debug_comm.S
index 9cc9702..740fa3e 100644
--- a/Debugger/debug_comm.S
+++ b/Debugger/debug_comm.S
@@ -765,6 +765,9 @@ _hasMsg2Copy:
/* Need to account for Packet Acknowledgement */
1: ldrb r0, [r5]
+ teq r0, #MSGBUF_CTRLC /* Look for Ctrl-C */
+ moveq r0, r4 /* If found, set R0 to current message length */
+ beq exit_dbg__getDebugMsg /* and return */
teq r0, #MSGBUF_NAKCHAR /* Look for '-' */
beq exit_dbg__getMsgError /* FIXME: We can't handle retransmission, flag message error */
teq r0, #MSGBUF_ACKCHAR /* Look for '+' */
diff --git a/Debugger/debug_stub.S b/Debugger/debug_stub.S
index 2b09eff..a82088d 100644
--- a/Debugger/debug_stub.S
+++ b/Debugger/debug_stub.S
@@ -627,9 +627,16 @@ dbg__bkpt_waitCMD_cont:
b dbg__bkpt_waitCMD_cont
_proc_command:
-/* Message now has $<packet info>\0 */
+/* Message now has Ctrl-C or $<packet info>\0 */
mov r4, r1 /* Use R4 as buffer pointer */
- ldrb r0, [r4], #1 /* Look for '$' */
+ ldrb r0, [r4], #1 /* Look for Ctrl-C or '$' */
+ teq r0, #MSGBUF_CTRLC
+ bne _dbg_check_gdb_command
+ /* Ctrl-C detected, do nothing (wait for next command from GDB) */
+ bl __dbg__procAckOnly /* send Ack */
+ b dbg__bkpt_waitCMD_cont
+
+_dbg_check_gdb_command:
teq r0, #MSGBUF_STARTCHAR
movne r0, #MSG_ERRFORMAT /* Message Format invalid (not '$') */
bne _dbg__cmdError /* Shouldn't happen */