diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-18 11:18:35 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-18 11:18:35 +0000 |
commit | 722fcb8d61e98be3ec2be73f26e8c9ab2136d70c (patch) | |
tree | 7229d52356c78bf6830141e138223acb3225cb03 /src | |
parent | 0470a9652b6275981ec132cb74a4af942b12a6ac (diff) | |
download | riscv-openocd-722fcb8d61e98be3ec2be73f26e8c9ab2136d70c.zip riscv-openocd-722fcb8d61e98be3ec2be73f26e8c9ab2136d70c.tar.gz riscv-openocd-722fcb8d61e98be3ec2be73f26e8c9ab2136d70c.tar.bz2 |
resume is now asynchronous
git-svn-id: svn://svn.berlios.de/openocd/trunk@828 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r-- | src/target/target.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/src/target/target.c b/src/target/target.c index ea130ce..dd16c2b 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -266,9 +266,6 @@ int target_halt(struct target_s *target) int target_resume(struct target_s *target, int current, u32 address, int handle_breakpoints, int debug_execution) { 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) @@ -277,24 +274,13 @@ int target_resume(struct target_s *target, int current, u32 address, int handle_ return ERROR_FAIL; } + /* note that resume *must* be asynchronous. The CPU can halt before we poll. The CPU can + * even halt at the current PC as a result of a software breakpoint being inserted by (a bug?) + * the application. + */ 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) - { - target_call_timer_callbacks(); - usleep(10000); - target_poll(target); - if ((timeout_ms -= 10) <= 0) - { - LOG_ERROR("timeout waiting for target resume"); - return ERROR_TARGET_TIMEOUT; - } - } - return retval; } |