diff options
author | Franck Jullien <franck.jullien@gmail.com> | 2013-10-03 23:22:32 +0200 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2013-10-15 20:39:28 +0000 |
commit | 7ef6a54da2cf7ab0e0473a4fdf62d701fffbc34a (patch) | |
tree | cf0616eed852bb7838c0a38f00408fe97e72ce7b | |
parent | a58f294ac49c0b499e9eb427f81fe85a6e7a4338 (diff) | |
download | riscv-openocd-7ef6a54da2cf7ab0e0473a4fdf62d701fffbc34a.zip riscv-openocd-7ef6a54da2cf7ab0e0473a4fdf62d701fffbc34a.tar.gz riscv-openocd-7ef6a54da2cf7ab0e0473a4fdf62d701fffbc34a.tar.bz2 |
jtag_vpi: fix path move function
Change-Id: I82bf6f733e0d9cb5c86553d0827c558fa98aa247
Signed-off-by: Franck Jullien <franck.jullien@gmail.com>
Reviewed-on: http://openocd.zylin.com/1672
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
-rw-r--r-- | src/jtag/drivers/jtag_vpi.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/jtag/drivers/jtag_vpi.c b/src/jtag/drivers/jtag_vpi.c index 84cd947..d0e90e2 100644 --- a/src/jtag/drivers/jtag_vpi.c +++ b/src/jtag/drivers/jtag_vpi.c @@ -123,23 +123,17 @@ static int jtag_vpi_tms_seq(const uint8_t *bits, int nb_bits) static int jtag_vpi_path_move(struct pathmove_command *cmd) { - uint16_t trans = 0; - int retval; - int i; + uint8_t trans[DIV_ROUND_UP(cmd->num_states, 8)]; + + memset(trans, 0, DIV_ROUND_UP(cmd->num_states, 8)); - for (i = 0; i < cmd->num_states; i++) { + for (int i = 0; i < cmd->num_states; i++) { if (tap_state_transition(tap_get_state(), true) == cmd->path[i]) - trans = trans | 1; - trans = trans << 1; + buf_set_u32(trans, i, 1, 1); + tap_set_state(cmd->path[i]); } - retval = jtag_vpi_tms_seq((uint8_t *)&trans, 1); - if (retval != ERROR_OK) - return retval; - - tap_set_state(cmd->path[i]); - - return ERROR_OK; + return jtag_vpi_tms_seq(trans, cmd->num_states); } /** |