summaryrefslogtreecommitdiff
path: root/src/jtag/core.c
diff options
context:
space:
mode:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-06-11 07:08:03 +0000
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-06-11 07:08:03 +0000
commit04cb1210733537aa65d2975515a8be137dbd0b2b (patch)
treef7e11962a1438deb66702cde97ae9e44222b9cfa /src/jtag/core.c
parentc1995bb08f1b67c67549d3d131111e3170cee07b (diff)
downloadopenocd+libswd-04cb1210733537aa65d2975515a8be137dbd0b2b.tar.gz
openocd+libswd-04cb1210733537aa65d2975515a8be137dbd0b2b.tar.bz2
openocd+libswd-04cb1210733537aa65d2975515a8be137dbd0b2b.tar.xz
openocd+libswd-04cb1210733537aa65d2975515a8be137dbd0b2b.zip
Move jtag_add_statemove decl/body nearer jtag_add_pathmove.
git-svn-id: svn://svn.berlios.de/openocd/trunk@2184 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/jtag/core.c')
-rw-r--r--src/jtag/core.c88
1 files changed, 44 insertions, 44 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index 27866502..1c14c8ea 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -476,6 +476,50 @@ void jtag_add_pathmove(int num_states, const tap_state_t *path)
cmd_queue_cur_state = path[num_states - 1];
}
+int jtag_add_statemove(tap_state_t goal_state)
+{
+ tap_state_t cur_state = cmd_queue_cur_state;
+
+ LOG_DEBUG( "cur_state=%s goal_state=%s",
+ tap_state_name(cur_state),
+ tap_state_name(goal_state) );
+
+
+ if (goal_state==cur_state )
+ ; /* nothing to do */
+ else if( goal_state==TAP_RESET )
+ {
+ jtag_add_tlr();
+ }
+ else if( tap_is_state_stable(cur_state) && tap_is_state_stable(goal_state) )
+ {
+ unsigned tms_bits = tap_get_tms_path(cur_state, goal_state);
+ unsigned tms_count = tap_get_tms_path_len(cur_state, goal_state);
+ tap_state_t moves[8];
+ assert(tms_count < DIM(moves));
+
+ for (unsigned i = 0; i < tms_count; i++, tms_bits >>= 1)
+ {
+ bool bit = tms_bits & 1;
+
+ cur_state = tap_state_transition(cur_state, bit);
+ moves[i] = cur_state;
+ }
+
+ jtag_add_pathmove(tms_count, moves);
+ }
+ else if( tap_state_transition(cur_state, true) == goal_state
+ || tap_state_transition(cur_state, false) == goal_state )
+ {
+ jtag_add_pathmove(1, &goal_state);
+ }
+
+ else
+ return ERROR_FAIL;
+
+ return ERROR_OK;
+}
+
void jtag_add_runtest(int num_cycles, tap_state_t state)
{
jtag_prelude(state);
@@ -1249,50 +1293,6 @@ int jtag_srst_asserted(int *srst_asserted)
return jtag->srst_asserted(srst_asserted);
}
-int jtag_add_statemove(tap_state_t goal_state)
-{
- tap_state_t cur_state = cmd_queue_cur_state;
-
- LOG_DEBUG( "cur_state=%s goal_state=%s",
- tap_state_name(cur_state),
- tap_state_name(goal_state) );
-
-
- if (goal_state==cur_state )
- ; /* nothing to do */
- else if( goal_state==TAP_RESET )
- {
- jtag_add_tlr();
- }
- else if( tap_is_state_stable(cur_state) && tap_is_state_stable(goal_state) )
- {
- unsigned tms_bits = tap_get_tms_path(cur_state, goal_state);
- unsigned tms_count = tap_get_tms_path_len(cur_state, goal_state);
- tap_state_t moves[8];
- assert(tms_count < DIM(moves));
-
- for (unsigned i = 0; i < tms_count; i++, tms_bits >>= 1)
- {
- bool bit = tms_bits & 1;
-
- cur_state = tap_state_transition(cur_state, bit);
- moves[i] = cur_state;
- }
-
- jtag_add_pathmove(tms_count, moves);
- }
- else if( tap_state_transition(cur_state, true) == goal_state
- || tap_state_transition(cur_state, false) == goal_state )
- {
- jtag_add_pathmove(1, &goal_state);
- }
-
- else
- return ERROR_FAIL;
-
- return ERROR_OK;
-}
-
enum reset_types jtag_get_reset_config(void)
{
return jtag_reset_config;