This moves common code into functions so as to make it clear
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 12 Mar 2008 14:45:26 +0000 (14:45 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 12 Mar 2008 14:45:26 +0000 (14:45 +0000)
that all the jtag_add_xxx() are indeed intended to do the same thing.

git-svn-id: svn://svn.berlios.de/openocd/trunk@504 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/jtag/jtag.c

index 6be63442ec57701914e43157ba0a5e6e3a8ee283..2503a165024a33cea0d14c9a590c873de4e4142a 100644 (file)
@@ -391,7 +391,7 @@ void cmd_queue_free()
        cmd_queue_pages = NULL;
 }
 
-void jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
+static void jtag_prelude1()
 {
        if (jtag_trst == 1)
        {
@@ -400,13 +400,23 @@ void jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state
                return;
        }
 
-       if (state != -1)
-               cmd_queue_end_state = state;
-
        if (cmd_queue_end_state == TAP_TLR)
                jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
+}
+
+static void jtag_prelude(enum tap_state state)
+{
+       jtag_prelude1();
        
+       if (state != -1)
+               cmd_queue_end_state = state;
+
        cmd_queue_cur_state = cmd_queue_end_state;
+}
+
+void jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
+{
+       jtag_prelude(state);
        
        int retval=interface_jtag_add_ir_scan(num_fields, fields, cmd_queue_end_state);
        if (retval!=ERROR_OK)
@@ -492,20 +502,7 @@ int MINIDRIVER(interface_jtag_add_ir_scan)(int num_fields, scan_field_t *fields,
 
 void jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
-       if (jtag_trst == 1)
-       {
-               WARNING("JTAG command queued, while TRST is low (TAP in reset)");
-               jtag_error=ERROR_JTAG_TRST_ASSERTED;
-               return;
-       }
-
-       if (state != -1)
-               cmd_queue_end_state = state;
-
-       if (cmd_queue_end_state == TAP_TLR)
-               jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
-               
-       cmd_queue_cur_state = cmd_queue_end_state;
+       jtag_prelude(state);
        
        int retval=interface_jtag_add_plain_ir_scan(num_fields, fields, cmd_queue_end_state);
        if (retval!=ERROR_OK)
@@ -551,20 +548,7 @@ int MINIDRIVER(interface_jtag_add_plain_ir_scan)(int num_fields, scan_field_t *f
 
 void jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
-       if (jtag_trst == 1)
-       {
-               WARNING("JTAG command queued, while TRST is low (TAP in reset)");
-               jtag_error=ERROR_JTAG_TRST_ASSERTED;
-               return;
-       }
-
-       if (state != -1)
-               cmd_queue_end_state = state;
-
-       if (cmd_queue_end_state == TAP_TLR)
-               jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
-                       
-       cmd_queue_cur_state = cmd_queue_end_state;
+       jtag_prelude(state);
 
        int retval=interface_jtag_add_dr_scan(num_fields, fields, cmd_queue_end_state);
        if (retval!=ERROR_OK)
@@ -749,20 +733,7 @@ void MINIDRIVER(interface_jtag_add_dr_out)(int device_num,
 
 void jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
-       if (jtag_trst == 1)
-       {
-               WARNING("JTAG command queued, while TRST is low (TAP in reset)");
-               jtag_error=ERROR_JTAG_TRST_ASSERTED;
-               return;
-       }
-
-       if (state != -1)
-               cmd_queue_end_state = state;
-
-       if (cmd_queue_end_state == TAP_TLR)
-               jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
-                       
-       cmd_queue_cur_state = cmd_queue_end_state;
+       jtag_prelude(state);
 
        int retval=interface_jtag_add_plain_dr_scan(num_fields, fields, cmd_queue_end_state);
        if (retval!=ERROR_OK)
@@ -806,20 +777,7 @@ int MINIDRIVER(interface_jtag_add_plain_dr_scan)(int num_fields, scan_field_t *f
 }
 void jtag_add_statemove(enum tap_state state)
 {
-       if (jtag_trst == 1)
-       {
-               WARNING("JTAG command queued, while TRST is low (TAP in reset)");
-               jtag_error=ERROR_JTAG_TRST_ASSERTED;
-               return;
-       }
-
-       if (state != -1)
-               cmd_queue_end_state = state;
-
-       if (cmd_queue_end_state == TAP_TLR)
-               jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
-                       
-       cmd_queue_cur_state = cmd_queue_end_state;
+       jtag_prelude(state);
 
        int retval;
        retval=interface_jtag_add_statemove(cmd_queue_end_state);
@@ -846,22 +804,11 @@ int MINIDRIVER(interface_jtag_add_statemove)(enum tap_state state)
 
 void jtag_add_pathmove(int num_states, enum tap_state *path)
 {
-       if (jtag_trst == 1)
-       {
-               WARNING("JTAG command queued, while TRST is low (TAP in reset)");
-               jtag_error=ERROR_JTAG_TRST_ASSERTED;
-               return;
-       }
-       
-       if (cmd_queue_end_state == TAP_TLR)
-               jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
-       
        /* the last state has to be a stable state */
        if (tap_move_map[path[num_states - 1]] == -1)
        {
-               ERROR("TAP path doesn't finish in a stable state");
-               jtag_error=ERROR_JTAG_NOT_IMPLEMENTED;
-               return;
+               ERROR("BUG: TAP path doesn't finish in a stable state");
+               exit(-1);
        }
 
        enum tap_state cur_state=cmd_queue_cur_state;
@@ -877,6 +824,8 @@ void jtag_add_pathmove(int num_states, enum tap_state *path)
                cur_state = path[i];
        }
        
+       jtag_prelude1();
+       
        cmd_queue_cur_state = path[num_states - 1];
 
        int retval=interface_jtag_add_pathmove(num_states, path);
@@ -925,20 +874,7 @@ int MINIDRIVER(interface_jtag_add_runtest)(int num_cycles, enum tap_state state)
 
 void jtag_add_runtest(int num_cycles, enum tap_state state)
 {
-       if (jtag_trst == 1)
-       {
-               WARNING("JTAG command queued, while TRST is low (TAP in reset)");
-               jtag_error=ERROR_JTAG_TRST_ASSERTED;
-               return;
-       }
-       
-       if (state != -1)
-               cmd_queue_end_state = state;
-
-       if (cmd_queue_end_state == TAP_TLR)
-               jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
-                       
-       cmd_queue_cur_state = cmd_queue_end_state;
+       jtag_prelude(state);
        
        /* executed by sw or hw fifo */
        int retval=interface_jtag_add_runtest(num_cycles, cmd_queue_end_state);

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)