Add jtag_queue_command() by Michael Bruck <mbruck@digenius.de> [8/8]
authorkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 18 May 2009 17:29:18 +0000 (17:29 +0000)
committerkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 18 May 2009 17:29:18 +0000 (17:29 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1822 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/svf/svf.c

index a68cfaec0418ae359840010dc1703dd28684392f..1267755b9b2d8d024c4c72339b8386b1640990a0 100644 (file)
@@ -695,9 +695,8 @@ static int svf_execute_tap(void)
 }
 
 // not good to use this
-extern jtag_command_t** jtag_get_last_command_p(void);
 extern void* cmd_queue_alloc(size_t size);
-extern jtag_command_t **last_comand_pointer;
+extern void jtag_queue_command(jtag_command_t * cmd);
 
 static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
 {
@@ -707,9 +706,6 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
        // tmp variable
        int i_tmp;
 
-       // not good to use this
-       jtag_command_t **last_cmd;
-
        // for RUNTEST
        int run_count;
        float min_time, max_time;
@@ -1180,15 +1176,15 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
                                // enter into run_state if necessary
                                if (last_state != svf_para.runtest_run_state)
                                {
-                                       last_cmd = jtag_get_last_command_p();
-                                       *last_cmd = cmd_queue_alloc(sizeof(jtag_command_t));
-                                       last_comand_pointer = &((*last_cmd)->next);
-                                       (*last_cmd)->next = NULL;
-                                       (*last_cmd)->type = JTAG_STATEMOVE;
-                                       (*last_cmd)->cmd.statemove = cmd_queue_alloc(sizeof(statemove_command_t));
-                                       (*last_cmd)->cmd.statemove->end_state = svf_para.runtest_run_state;
-
-                                       cmd_queue_end_state = cmd_queue_cur_state = (*last_cmd)->cmd.statemove->end_state;
+                                       jtag_command_t * cmd = cmd_queue_alloc(sizeof(jtag_command_t));
+                                       
+                                       jtag_queue_command(cmd);
+                               
+                                       cmd->type = JTAG_STATEMOVE;
+                                       cmd->cmd.statemove = cmd_queue_alloc(sizeof(statemove_command_t));
+                                       cmd->cmd.statemove->end_state = svf_para.runtest_run_state;
+
+                                       cmd_queue_end_state = cmd_queue_cur_state = cmd->cmd.statemove->end_state;
                                }
 
                                // call jtag_add_clocks
@@ -1197,15 +1193,14 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
                                if (svf_para.runtest_end_state != svf_para.runtest_run_state)
                                {
                                        // move to end_state
-                                       last_cmd = jtag_get_last_command_p();
-                                       *last_cmd = cmd_queue_alloc(sizeof(jtag_command_t));
-                                       last_comand_pointer = &((*last_cmd)->next);
-                                       (*last_cmd)->next = NULL;
-                                       (*last_cmd)->type = JTAG_STATEMOVE;
-                                       (*last_cmd)->cmd.statemove = cmd_queue_alloc(sizeof(statemove_command_t));
-                                       (*last_cmd)->cmd.statemove->end_state = svf_para.runtest_end_state;
-
-                                       cmd_queue_end_state = cmd_queue_cur_state = (*last_cmd)->cmd.statemove->end_state;
+                                       jtag_command_t * cmd = cmd_queue_alloc(sizeof(jtag_command_t));
+                                       
+                                       jtag_queue_command(cmd);
+                                       cmd->type = JTAG_STATEMOVE;
+                                       cmd->cmd.statemove = cmd_queue_alloc(sizeof(statemove_command_t));
+                                       cmd->cmd.statemove->end_state = svf_para.runtest_end_state;
+
+                                       cmd_queue_end_state = cmd_queue_cur_state = cmd->cmd.statemove->end_state;
                                }
                                last_state = svf_para.runtest_end_state;
 #else
@@ -1294,15 +1289,15 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
                        if (svf_tap_state_is_stable(state))
                        {
                                // TODO: move to state
-                               last_cmd = jtag_get_last_command_p();
-                               *last_cmd = cmd_queue_alloc(sizeof(jtag_command_t));
-                               last_comand_pointer = &((*last_cmd)->next);
-                               (*last_cmd)->next = NULL;
-                               (*last_cmd)->type = JTAG_STATEMOVE;
-                               (*last_cmd)->cmd.statemove = cmd_queue_alloc(sizeof(statemove_command_t));
-                               (*last_cmd)->cmd.statemove->end_state = state;
-
-                               cmd_queue_end_state = cmd_queue_cur_state = (*last_cmd)->cmd.statemove->end_state;
+                               jtag_command_t * cmd = cmd_queue_alloc(sizeof(jtag_command_t));
+                                       
+                               jtag_queue_command(cmd);
+                               
+                               cmd->type = JTAG_STATEMOVE;
+                               cmd->cmd.statemove = cmd_queue_alloc(sizeof(statemove_command_t));
+                               cmd->cmd.statemove->end_state = state;
+
+                               cmd_queue_end_state = cmd_queue_cur_state = cmd->cmd.statemove->end_state;
                                last_state = state;
 
                                LOG_DEBUG("\tmove to %s by state_move", svf_tap_state_name[state]);