aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/target/cortex_m.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index c225b1a..7f62a6d 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -931,8 +931,12 @@ static int cortex_m_poll_one(struct target *target)
if (target->state != TARGET_RESET) {
target->state = TARGET_RESET;
LOG_TARGET_INFO(target, "external reset detected");
+ /* In case of an unexpected S_RESET_ST set TARGET_RESET state
+ * and keep it until the next poll to allow its detection */
+ return ERROR_OK;
}
- return ERROR_OK;
+ /* S_RESET_ST was expected (in a reset command). Continue processing
+ * to quickly get out of TARGET_RESET state */
}
if (target->state == TARGET_RESET) {