target_resume() is only used within OpenOCD.
 
Symbols
loading...
Files
loading...

target_resume() function

Make the target (re)start executing using its saved execution context (possibly with some modifications). @todo Resolve the ambiguity about what the "debug_execution" flag signifies. For example, Target implementations don't agree on how it relates to invalidation of the register cache, or to whether breakpoints and watchpoints should be enabled. (It would seem wrong to enable breakpoints when running downloaded "helper" algorithms (debug_execution true), since the breakpoints would be set to match target firmware being debugged, not the helper algorithm.... and enabling them could cause such helpers to malfunction (for example, by overwriting data with a breakpoint instruction. On the other hand the infrastructure for running such helpers might use this procedure but rely on hardware breakpoint to detect termination.)

Syntax

int target_resume(struct target *target,     int current,     target_addr_t address,     int handle_breakpoints,     int debug_execution);
Implemented in target.c:556

Arguments

target

Which target should start executing.

current

True to use the target's saved program counter instead of the address parameter

address

Optionally used as the program counter.

handle_breakpoints

True iff breakpoints at the resumption PC should be skipped. (For example, maybe execution was stopped by such a breakpoint, in which case it would be counterproductive to let it re-trigger.

debug_execution

False if all working areas allocated by OpenOCD should be released and/or restored to their original contents. (This would for example be true to run some downloaded "helper" algorithm code, which resides in one such working buffer and uses another for data storage.)

References

LocationReferrerText
target.c:556
int target_resume(struct target *target, int current, target_addr_t address,
target.h:395
int target_resume(struct target *target, int current, target_addr_t address,
ambiqmicro.c:289ambiqmicro_exec_command()
retval = target_resume(
arc.c:1105arc_assert_reset()
CHECK_RETVAL(target_resume(target, 1, 0, 0, 0));
arm_semihosting.c:53arm_semihosting_resume()
*retval = target_resume(target, 1, 0, 0, 0);
arm_semihosting.c:61arm_semihosting_resume()
*retval = target_resume(target, 1, 0, 0, 0);
armv4_5.c:1503armv4_5_run_algorithm_inner()
retval = target_resume(target, 0, entry_point, 1, 1);
armv7m.c:616armv7m_start_algorithm()
retval = target_resume(target, 0, entry_point, 1, 1);
cortex_m.c:2471cortex_m_profiling()
retval = target_resume(target, 1, 0, 0, 0);
dsp563xx.c:1422dsp563xx_run_algorithm()
retval = target_resume(target, 0, entry_point, 1, 1);
esp32_apptrace.c:711esp32_apptrace_safe_halt_targets()
res = target_resume(ctx->cpus[k], 1, 0, 1, 0);
esp32_apptrace.c:799esp32_apptrace_connect_targets()
res = target_resume(ctx->cpus[k], 1, 0, 1, 0);
esp32_apptrace.c:1355esp32_sysview_stop()
res = target_resume(ctx->cpus[k], 1, 0, 1, 0);
esp32s2.c:400esp32s2_poll()
ret = target_resume(target, 1, 0, 1, 0);
esp_xtensa.c:216esp_xtensa_profiling()
retval = target_resume(target, 1, 0, 0, 0);
esp_xtensa_smp.c:221esp_xtensa_smp_poll()
ret = target_resume(target, 1, 0, 1, 0);
esp_xtensa_smp.c:232esp_xtensa_smp_poll()
ret = target_resume(target, 1, 0, 1, 0);
gdb_server.c:912gdb_fileio_reply()
target_resume(target, 1, 0x0, 0, 0);
gdb_server.c:922gdb_fileio_reply()
target_resume(target, 1, 0x0, 0, 0);
gdb_server.c:1739gdb_step_continue_packet()
retval = target_resume(target, current, address, 0, 0);
gdb_server.c:3062gdb_handle_vcont_packet()
retval = target_resume(target, 1, 0, 0, 0);
gdb_server.c:3520gdb_fileio_response_packet()
retval = target_resume(target, 1, 0x0, 0, 0);
hla_target.c:409hl_deassert_reset()
return target->reset_halt ? ERROR_OK : target_resume(target, 1, 0, 0, 0);
mips32.c:570mips32_run_and_wait()
retval = target_resume(target, 0, entry_point, 0, 1);
or1k.c:1219or1k_profiling()
retval = target_resume(target, 1, 0, 0, 0);
stm8.c:1794stm8_run_and_wait()
retval = target_resume(target, 0, entry_point, 0, 1);
target.c:2322target_profiling_default()
retval = target_resume(target, 1, 0, 0, 0);
target.c:3331handle_resume_command()
return target_resume(target, current, addr, 1, 0);
target.c:4489handle_profile_command()
retval = target_resume(target, 1, 0, 0, 0);
target.c:6475handle_run_until_stop_fast()
target_resume(target, 1, 0, 1, 0);