]> git.sur5r.net Git - openocd/commitdiff
David Brownell <david-b@pacbell.net>:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 29 Jun 2009 20:04:14 +0000 (20:04 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 29 Jun 2009 20:04:14 +0000 (20:04 +0000)
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
src/target/arm926ejs.c

index ab9e973776d011f7df87158f4cfc35fe969f9427..79d91e7a3aa0b2c676cb7f11df44952c9365e587 100644 (file)
@@ -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))
                {
index 589dfdea4190057a6d216ce091af7cd14754fe45..d9c677ffa88e7bb6c06d98bbcb12771e5152454b 100644 (file)
@@ -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