diff options
author | kc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-05-18 17:29:18 +0000 |
---|---|---|
committer | kc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-05-18 17:29:18 +0000 |
commit | 204a360602b175e320be26a914209b13e0e53b60 (patch) | |
tree | 9088516f3d7dbbd7dc2b1adfb1afac45b0846354 | |
parent | f9d861d357f49ea12d45eb9f695a2b9857e7f7dd (diff) | |
download | openocd+libswd-204a360602b175e320be26a914209b13e0e53b60.tar.gz openocd+libswd-204a360602b175e320be26a914209b13e0e53b60.tar.bz2 openocd+libswd-204a360602b175e320be26a914209b13e0e53b60.tar.xz openocd+libswd-204a360602b175e320be26a914209b13e0e53b60.zip |
Add jtag_queue_command() by Michael Bruck <mbruck@digenius.de> [8/8]
git-svn-id: svn://svn.berlios.de/openocd/trunk@1822 b42882b7-edfa-0310-969c-e2dbd0fdcd60
-rw-r--r-- | src/svf/svf.c | 59 |
1 files changed, 27 insertions, 32 deletions
diff --git a/src/svf/svf.c b/src/svf/svf.c index a68cfaec..1267755b 100644 --- a/src/svf/svf.c +++ b/src/svf/svf.c @@ -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]); |