From d3315c4183c34cf48590e9c92ef2b96180271a0a Mon Sep 17 00:00:00 2001
From: zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Mon, 29 Jun 2009 20:04:14 +0000
Subject: David Brownell <david-b@pacbell.net>:

Remove some bogus warnings during server startup for ARM926ejs
targets that were already halted for debug ... e.g. started up
a freshly built instance.


git-svn-id: svn://svn.berlios.de/openocd/trunk@2417 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/target/arm7_9_common.c |  3 ++-
 src/target/arm926ejs.c     | 18 +++++++++++++++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

(limited to 'src')

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
-- 
cgit v1.2.3