]> git.gag.com Git - fw/openocd/commitdiff
target/arc: remove saving context during reset
authorEvgeniy Didin <didin@synopsys.com>
Tue, 17 Mar 2020 11:06:24 +0000 (14:06 +0300)
committerOleksij Rempel <linux@rempel-privat.de>
Mon, 20 Apr 2020 17:22:53 +0000 (18:22 +0100)
In arc_poll() function we handle the cases, when jtag indicates, that
processor is halted, but target->state is not TARGET_HALTED.
In case, when processor was halted and target->state was TARGET_RUNNING,
we should save context. At the same time if target->state was TARGET_RESET
we do not need to save context.

Changes: 16.04:
Fix - Move setting target->state = TARGET_HALT after
"target->state == TARGET_RUNNIG" check, otherwise
this check makes no sense

Change-Id: I92ab6ec71cf58273bb8401d14a562035de3deab4
Signed-off-by: Evgeniy Didin <didin@synopsys.com>
Reviewed-on: http://openocd.zylin.com/5524
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
src/target/arc.c

index 244dd5247624a40bf985b1bd6a4cfb6d61a6cfbf..823b9ed7084985f4260f3b428e9d8c736f5c17ba 100644 (file)
@@ -928,8 +928,10 @@ static int arc_poll(struct target *target)
                CHECK_RETVAL(arc_get_register_value(target, "status32", &value));
                if (value & AUX_STATUS32_REG_HALT_BIT) {
                        LOG_DEBUG("ARC core in halt or reset state.");
+                       /* Save context if target was not in reset state */
+                       if (target->state == TARGET_RUNNING)
+                               CHECK_RETVAL(arc_debug_entry(target));
                        target->state = TARGET_HALTED;
-                       CHECK_RETVAL(arc_debug_entry(target));
                        CHECK_RETVAL(target_call_event_callbacks(target, TARGET_EVENT_HALTED));
                } else {
                LOG_DEBUG("Discrepancy of STATUS32[0] HALT bit and ARC_JTAG_STAT_RU, "