summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/target/arm7_9_common.c3
-rw-r--r--src/target/arm926ejs.c18
2 files changed, 19 insertions, 2 deletions
diff --git a/src/target/arm7_9_common.c b/src/target/arm7_9_common.c
index ab9e9737..79d91e7a 100644
--- a/src/target/arm7_9_common.c
+++ b/src/target/arm7_9_common.c
@@ -913,8 +913,9 @@ int arm7_9_poll(target_t *target)
/* LOG_DEBUG("DBGACK set, dbg_state->value: 0x%x", buf_get_u32(dbg_stat->value, 0, 32));*/
if (target->state == TARGET_UNKNOWN)
{
+ /* Starting OpenOCD with target in debug-halt */
target->state = TARGET_RUNNING;
- LOG_WARNING("DBGACK set while target was in unknown state. Reset or initialize target.");
+ LOG_DEBUG("DBGACK already set during server startup.");
}
if ((target->state == TARGET_RUNNING) || (target->state == TARGET_RESET))
{
diff --git a/src/target/arm926ejs.c b/src/target/arm926ejs.c
index 589dfdea..d9c677ff 100644
--- a/src/target/arm926ejs.c
+++ b/src/target/arm926ejs.c
@@ -262,10 +262,12 @@ int arm926ejs_examine_debug_reason(target_t *target)
if ((retval = jtag_execute_queue()) != ERROR_OK)
return retval;
+ /* Method-Of-Entry (MOE) field */
debug_reason = buf_get_u32(dbg_stat->value, 6, 4);
switch (debug_reason)
{
+ /* case 0: no debug entry */
case 1:
LOG_DEBUG("breakpoint from EICE unit 0");
target->debug_reason = DBG_REASON_BREAKPOINT;
@@ -307,7 +309,21 @@ int arm926ejs_examine_debug_reason(target_t *target)
target->debug_reason = DBG_REASON_DBGRQ;
break;
case 11:
- LOG_ERROR("BUG: debug re-entry from system speed access shouldn't be handled here");
+ LOG_DEBUG("debug re-entry from system speed access");
+ /* This is normal when connecting to something that's
+ * already halted, or in some related code paths, but
+ * otherwise is surprising (and presumably wrong).
+ */
+ switch (target->debug_reason) {
+ case DBG_REASON_DBGRQ:
+ break;
+ default:
+ LOG_ERROR("unexpected -- debug re-entry");
+ /* FALLTHROUGH */
+ case DBG_REASON_UNDEFINED:
+ target->debug_reason = DBG_REASON_DBGRQ;
+ break;
+ }
break;
case 12:
/* FIX!!!! here be dragons!!! We need to fail here so