diff options
Diffstat (limited to 'src/target/target.c')
-rw-r--r-- | src/target/target.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/target/target.c b/src/target/target.c index 1d6c4d36..bd334da2 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -267,8 +267,6 @@ int target_resume(struct target_s *target, int current, u32 address, int handle_ int retval; int timeout_ms = 5000; - enum target_state resume_state = debug_execution ? TARGET_DEBUG_RUNNING : TARGET_RUNNING; - /* We can't poll until after examine */ if (!target->type->examined) { @@ -279,17 +277,21 @@ int target_resume(struct target_s *target, int current, u32 address, int handle_ if ((retval = target->type->resume(target, current, address, handle_breakpoints, debug_execution)) != ERROR_OK) return retval; - /* wait for target to exit halted mode */ - target_poll(target); - - while (target->state != resume_state) + /* only check for resume event if normal resume */ + if (!debug_execution) { - usleep(10000); + /* wait for target to exit halted mode - not debug resume*/ target_poll(target); - if ((timeout_ms -= 10) <= 0) + + while (target->state != TARGET_RUNNING) { - LOG_ERROR("timeout waiting for target resume"); - return ERROR_TARGET_TIMEOUT; + usleep(10000); + target_poll(target); + if ((timeout_ms -= 10) <= 0) + { + LOG_ERROR("timeout waiting for target resume"); + return ERROR_TARGET_TIMEOUT; + } } } |