summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-05-18 17:29:18 +0000
committerkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-05-18 17:29:18 +0000
commit204a360602b175e320be26a914209b13e0e53b60 (patch)
tree9088516f3d7dbbd7dc2b1adfb1afac45b0846354
parentf9d861d357f49ea12d45eb9f695a2b9857e7f7dd (diff)
downloadopenocd+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.c59
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]);