]> git.sur5r.net Git - openocd/commitdiff
fix broken ir/drscan -endstate option. The statemachine now actually ends up in said...
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 14 May 2009 18:45:19 +0000 (18:45 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 14 May 2009 18:45:19 +0000 (18:45 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1784 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/jtag/jtag.c

index 32211ba12ecba3f4a677fcd782919656aba9a410..c58cde6fe05020525234a7923b73bfe15495478e 100644 (file)
@@ -2875,7 +2875,7 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
        /*          "statename" */
        /* at the end of the arguments. */
        /* assume none. */
-       endstate = TAP_INVALID;
+       endstate = cmd_queue_end_state;
        if( argc >= 4 ){
                /* have at least one pair of numbers. */
                /* 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;
        }
 
-       jtag_add_ir_scan(num_fields, fields, TAP_INVALID);
        /* did we have an endstate? */
-       if (endstate != TAP_INVALID)
-               jtag_add_end_state(endstate);
+       jtag_add_ir_scan(num_fields, fields, endstate);
 
-       jtag_execute_queue();
+       int retval=jtag_execute_queue();
 
        for (i = 0; i < num_fields; i++)
                free(fields[i].out_value);
 
        free (fields);
 
-       return ERROR_OK;
+       return retval;
 }
 
 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 */
-       endstate = TAP_INVALID;
+       endstate = cmd_queue_end_state;
        /* validate arguments as numbers */
        e = JIM_OK;
        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++;
        }
 
-       jtag_add_dr_scan(num_fields, fields, TAP_INVALID);
-       /* did we get an end state? */
-       if (endstate != TAP_INVALID)
-               jtag_add_end_state(endstate);
+       jtag_add_dr_scan(num_fields, fields, endstate);
 
        retval = jtag_execute_queue();
        if (retval != ERROR_OK)