fix broken ir/drscan -endstate option. The statemachine now actually ends up in said state.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1784 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
oharboe 2009-05-14 18:45:19 +00:00
parent 0bb9c5de63
commit 651cb917e7
1 changed files with 6 additions and 11 deletions

View File

@ -2875,7 +2875,7 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
/* "statename" */ /* "statename" */
/* at the end of the arguments. */ /* at the end of the arguments. */
/* assume none. */ /* assume none. */
endstate = TAP_INVALID; endstate = cmd_queue_end_state;
if( argc >= 4 ){ if( argc >= 4 ){
/* have at least one pair of numbers. */ /* have at least one pair of numbers. */
/* is last pair the magic text? */ /* is last pair the magic text? */
@ -2918,19 +2918,17 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
fields[i].in_value = NULL; fields[i].in_value = NULL;
} }
jtag_add_ir_scan(num_fields, fields, TAP_INVALID);
/* did we have an endstate? */ /* did we have an endstate? */
if (endstate != TAP_INVALID) jtag_add_ir_scan(num_fields, fields, endstate);
jtag_add_end_state(endstate);
jtag_execute_queue(); int retval=jtag_execute_queue();
for (i = 0; i < num_fields; i++) for (i = 0; i < num_fields; i++)
free(fields[i].out_value); free(fields[i].out_value);
free (fields); free (fields);
return ERROR_OK; return retval;
} }
static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args) static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args)
@ -2959,7 +2957,7 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
} }
/* assume no endstate */ /* assume no endstate */
endstate = TAP_INVALID; endstate = cmd_queue_end_state;
/* validate arguments as numbers */ /* validate arguments as numbers */
e = JIM_OK; e = JIM_OK;
for (i = 2; i < argc; i+=2) for (i = 2; i < argc; i+=2)
@ -3031,10 +3029,7 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
field_count++; field_count++;
} }
jtag_add_dr_scan(num_fields, fields, TAP_INVALID); jtag_add_dr_scan(num_fields, fields, endstate);
/* did we get an end state? */
if (endstate != TAP_INVALID)
jtag_add_end_state(endstate);
retval = jtag_execute_queue(); retval = jtag_execute_queue();
if (retval != ERROR_OK) if (retval != ERROR_OK)