resume is now asynchronous
git-svn-id: svn://svn.berlios.de/openocd/trunk@828 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
0470a9652b
commit
722fcb8d61
|
@ -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 target_resume(struct target_s *target, int current, u32 address, int handle_breakpoints, int debug_execution)
|
||||||
{
|
{
|
||||||
int retval;
|
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 */
|
/* We can't poll until after examine */
|
||||||
if (!target->type->examined)
|
if (!target->type->examined)
|
||||||
|
@ -277,24 +274,13 @@ int target_resume(struct target_s *target, int current, u32 address, int handle_
|
||||||
return ERROR_FAIL;
|
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)
|
if ((retval = target->type->resume(target, current, address, handle_breakpoints, debug_execution)) != ERROR_OK)
|
||||||
return retval;
|
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;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue