X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fhelper%2Fstartup.tcl;h=3eb7419ffc6eb676da884aac9c2f27613db25d92;hb=9655c5b093d459df001d7a11742d9a84183ce1f2;hp=ba044be28d4f49c8533a7af3dc28ccaad14b7762;hpb=072d6d3db620d1592b988d9822cc01812eef3586;p=openocd diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl index ba044be2..3eb7419f 100644 --- a/src/helper/startup.tcl +++ b/src/helper/startup.tcl @@ -134,7 +134,29 @@ proc ocd_gdb_restart {target_id} { reset halt } +global in_process_reset +set in_process_reset 0 + +# Catch reset recursion proc ocd_process_reset { MODE } { + global in_process_reset + if {$in_process_reset} { + set in_process_reset 0 + return -code error "'reset' can not be invoked recursively" + } + + set in_process_reset 1 + set success [expr [catch {ocd_process_reset_inner $MODE} result]==0] + set in_process_reset 0 + + if {$success} { + return $result + } else { + return -code error $result + } +} + +proc ocd_process_reset_inner { MODE } { # If this target must be halted... set halt -1