diff options
author | zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-06-07 23:35:29 +0000 |
---|---|---|
committer | zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-06-07 23:35:29 +0000 |
commit | 695c6c09603547edcfc78f18c1efd23c7ccb10dd (patch) | |
tree | 8730d2cb858c459a6e55bd0e7b8d174c3d5c5762 /src/target | |
parent | d512fe71ea48eb281584f8d67d1e17936d9f0518 (diff) | |
download | openocd_libswd-695c6c09603547edcfc78f18c1efd23c7ccb10dd.tar.gz openocd_libswd-695c6c09603547edcfc78f18c1efd23c7ccb10dd.tar.bz2 openocd_libswd-695c6c09603547edcfc78f18c1efd23c7ccb10dd.tar.xz openocd_libswd-695c6c09603547edcfc78f18c1efd23c7ccb10dd.zip |
David Brownell <david-b@pacbell.net>:
Let disabled targets be ignored during normal operation:
- In target_examine(), ignore disabled TAPs
- Reset handling must not poke at them either:
* fail $target_name arp_* operations on disabled TAPs
* in startup.tcl, don't even issue the arp_* wait ops
ZW: removed superfluous braces from the patch to target.c.
git-svn-id: svn://svn.berlios.de/openocd/trunk@2100 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target')
-rw-r--r-- | src/target/target.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/target/target.c b/src/target/target.c index d6726492..1c32fdbb 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -479,12 +479,14 @@ int target_examine_one(struct target_s *target) int target_examine(void) { int retval = ERROR_OK; - target_t *target = all_targets; - while (target) + target_t *target; + + for (target = all_targets; target; target = target->next) { + if (!target->tap->enabled) + continue; if ((retval = target_examine_one(target)) != ERROR_OK) return retval; - target = target->next; } return retval; } @@ -3734,6 +3736,8 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) Jim_WrongNumArgs( goi.interp, 2, argv, "[no parameters]"); return JIM_ERR; } + if (!target->tap->enabled) + goto err_tap_disabled; e = target->type->examine( target ); if( e != ERROR_OK ){ Jim_SetResult_sprintf( interp, "examine-fails: %d", e ); @@ -3745,6 +3749,8 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) Jim_WrongNumArgs( goi.interp, 2, argv, "[no parameters]"); return JIM_ERR; } + if (!target->tap->enabled) + goto err_tap_disabled; if( !(target_was_examined(target)) ){ e = ERROR_TARGET_NOT_EXAMINED; } else { @@ -3772,6 +3778,8 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) if( e != JIM_OK ){ return e; } + if (!target->tap->enabled) + goto err_tap_disabled; /* determine if we should halt or not. */ target->reset_halt = !!a; /* When this happens - all workareas are invalid. */ @@ -3789,6 +3797,8 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) Jim_WrongNumArgs( goi.interp, 0, argv, "halt [no parameters]"); return JIM_ERR; } + if (!target->tap->enabled) + goto err_tap_disabled; target->type->halt( target ); return JIM_OK; case TS_CMD_WAITSTATE: @@ -3806,6 +3816,8 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) if( e != JIM_OK ){ return e; } + if (!target->tap->enabled) + goto err_tap_disabled; e = target_wait_state( target, n->value, a ); if( e != ERROR_OK ){ Jim_SetResult_sprintf( goi.interp, @@ -3861,6 +3873,10 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) return JIM_OK; } return JIM_ERR; + +err_tap_disabled: + Jim_SetResult_sprintf(interp, "[TAP is disabled]"); + return JIM_ERR; } static int target_create( Jim_GetOptInfo *goi ) |