"ABSENT"
};
-char *svf_tap_state_name[16];
+char *svf_tap_state_name[TAP_NUM_STATES];
#define XXR_TDI (1 << 0)
#define XXR_TDO (1 << 1)
svf_buffer_size = 2 * SVF_MAX_BUFFER_SIZE_TO_COMMIT;
memcpy(&svf_para, &svf_para_init, sizeof(svf_para));
- for (i = 0; i < dimof(svf_tap_state_name); i++)
+ for (i = 0; i < (int)dimof(svf_tap_state_name); i++)
{
svf_tap_state_name[i] = (char *)tap_state_name(i);
}
static int svf_tap_state_is_valid(tap_state_t state)
{
- return ((state >= 0) && (state < sizeof(svf_tap_state_name)));
+ return state >= 0 && state < TAP_NUM_STATES;
}
static int svf_find_string_in_array(char *str, char **strs, int num_of_element)
{
if ((svf_tdi_buffer[index + j] & svf_mask_buffer[index + j]) != svf_tdo_buffer[index + j])
{
- LOG_ERROR("tdo check error at line %d, read = 0x%X, want = 0x%X, mask = 0x%X",
+ unsigned bitmask = (1 << svf_check_tdo_para[i].bit_len) - 1;
+ unsigned received, expected, tapmask;
+ memcpy(&received, svf_tdi_buffer + index, sizeof(unsigned));
+ memcpy(&expected, svf_tdo_buffer + index, sizeof(unsigned));
+ memcpy(&tapmask, svf_mask_buffer + index, sizeof(unsigned));
+ LOG_ERROR("tdo check error at line %d, "
+ "read = 0x%X, want = 0x%X, mask = 0x%X",
svf_check_tdo_para[i].line_num,
- (*(int*)(svf_tdi_buffer + index)) & ((1 << svf_check_tdo_para[i].bit_len) - 1),
- (*(int*)(svf_tdo_buffer + index)) & ((1 << svf_check_tdo_para[i].bit_len) - 1),
- (*(int*)(svf_mask_buffer + index)) & ((1 << svf_check_tdo_para[i].bit_len) - 1));
+ received & bitmask,
+ expected & bitmask,
+ tapmask & bitmask);
return ERROR_FAIL;
}
}
field.tap = tap;
field.num_bits = i;
field.out_value = &svf_tdi_buffer[svf_buffer_index];
- field.out_mask = NULL;
+
field.in_value = &svf_tdi_buffer[svf_buffer_index];
- field.in_check_value = NULL;
- field.in_check_mask = NULL;
+
+
field.in_handler = NULL;
- field.in_handler_priv = NULL;
+
jtag_add_plain_dr_scan(1, &field, svf_para.dr_end_state);
svf_buffer_index += (i + 7) >> 3;
field.tap = tap;
field.num_bits = i;
field.out_value = &svf_tdi_buffer[svf_buffer_index];
- field.out_mask = NULL;
+
field.in_value = &svf_tdi_buffer[svf_buffer_index];
- field.in_check_value = NULL;
- field.in_check_mask = NULL;
+
+
field.in_handler = NULL;
- field.in_handler_priv = NULL;
+
jtag_add_plain_ir_scan(1, &field, svf_para.ir_end_state);
svf_buffer_index += (i + 7) >> 3;
// output debug info
if ((SIR == command) || (SDR == command))
{
+ int read_value;
+ memcpy(&read_value, svf_tdi_buffer, sizeof(int));
// in debug mode, data is from index 0
- LOG_DEBUG("\tTDO read = 0x%X", (*(int*)svf_tdi_buffer) & ((1 << (svf_check_tdo_para[0].bit_len)) - 1));
+ int read_mask = (1 << (svf_check_tdo_para[0].bit_len)) - 1;
+ LOG_DEBUG("\tTDO read = 0x%X", read_value & read_mask);
}
}
}