summaryrefslogtreecommitdiff
path: root/src/xsvf
diff options
context:
space:
mode:
Diffstat (limited to 'src/xsvf')
-rw-r--r--src/xsvf/xsvf.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/xsvf/xsvf.c b/src/xsvf/xsvf.c
index 24a14de7..0e3152da 100644
--- a/src/xsvf/xsvf.c
+++ b/src/xsvf/xsvf.c
@@ -501,16 +501,18 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
field.tap = tap;
field.num_bits = xsdrsize;
field.out_value = dr_out_buf;
-
- field.in_value = NULL;
-
- jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL);
+ field.in_value = calloc(CEIL(field.num_bits, 8), 1);
if (tap == NULL)
jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
else
jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+ jtag_check_value_mask(&field, dr_in_buf, dr_in_mask);
+
+ free(field.in_value);
+
+
/* LOG_DEBUG("FLUSHING QUEUE"); */
result = jtag_execute_queue();
if (result == ERROR_OK)
@@ -713,10 +715,10 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
field.tap = tap;
field.num_bits = bitcount;
field.out_value = ir_buf;
-
+
field.in_value = NULL;
-
-
+
+
field.in_handler = NULL;
if (tap == NULL)
@@ -944,18 +946,21 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
field.tap = tap;
field.num_bits = xsdrsize;
field.out_value = dr_out_buf;
-
- field.in_value = NULL;
+ field.in_value = calloc(CEIL(field.num_bits, 8), 1);
if (attempt > 0 && verbose)
LOG_USER("LSDR retry %d", attempt);
- jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL);
if (tap == NULL)
jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
else
jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+ jtag_check_value_mask(&field, dr_in_buf, dr_in_mask);
+
+ free(field.in_value);
+
+
/* LOG_DEBUG("FLUSHING QUEUE"); */
result = jtag_execute_queue();
if(result == ERROR_OK)