That function basically exists in the xsvf.c file, so some factoring may
be possible.
Here is a copy of my current work:
> Single stepping is broken in ARM11 w/parport interface(and
> others). I'm working on adding a jtag_add_statemove() fn
> that will sit on top of jtag_add_pathmove() that is probably
> necessary to implement more robust ARM11 support.
>
>
>
/**
* Function xsvf_add_statemove
* moves from the current state to the goal \a state. This needs
* to be handled according to the xsvf spec, which has nothing
* to do with the JTAG spec or OpenOCD as such.
*
* Implemented via jtag_add_pathmove().
*/
static void xsvf_add_statemove(tap_state_t goal_state)
{
tap_state_t moves[8];
tap_state_t cur_state = cmd_queue_cur_state;
int i;
int tms_bits = tap_get_tms_path(cur_state, goal_state);
int tms_count = tap_get_tms_path_len(cur_state, goal_state);
LOG_DEBUG( "cur_state=%s goal_state=%s tms_bits=%02x tms_count=%d",
tap_state_name(cur_state), tap_state_name(goal_state),
tms_bits, tms_count );
assert( (unsigned) tms_count < DIM(moves) );
if (goal_state != TAP_RESET && goal_state==cur_state)
return;
if( cur_state==TAP_RESET )
{
jtag_add_tlr();
return;
}
for (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);
}
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development