]> git.sur5r.net Git - openocd/commitdiff
etb: fix incorrect previous patchset
authorJie Zhang <jzhang918@gmail.com>
Mon, 1 Aug 2011 16:15:19 +0000 (17:15 +0100)
committerSpencer Oliver <ntfreak@users.sourceforge.net>
Mon, 1 Aug 2011 16:16:10 +0000 (17:16 +0100)
This corrects two issues found with openocd.
d7f71e7fe9645fa8c3f88cf6fc9ad438aa6708f3 removed some code that was
being used.

The above then caused even more code to get removed by commit 1cfb2287a67c1f78b76583b2e5ed83ca3560b0d5.

Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
src/target/etb.c
src/target/smp.c

index 3cb225468d66a6a551f7a88e530120c6551f7742..974ab2b5c9f7585eb1259c688e9faf0ce28d04f5 100644 (file)
@@ -304,20 +304,32 @@ static int etb_write_reg(struct reg *reg, uint32_t value)
 {
        struct etb_reg *etb_reg = reg->arch_info;
        uint8_t reg_addr = etb_reg->addr & 0x7f;
+       struct scan_field fields[3];
 
        LOG_DEBUG("%i: 0x%8.8" PRIx32 "", (int)(etb_reg->addr), value);
 
        etb_scann(etb_reg->etb, 0x0);
        etb_set_instr(etb_reg->etb, 0xc);
 
+       fields[0].num_bits = 32;
        uint8_t temp0[4];
+       fields[0].out_value = temp0;
        buf_set_u32(&temp0, 0, 32, value);
+       fields[0].in_value = NULL;
 
+       fields[1].num_bits = 7;
        uint8_t temp1;
+       fields[1].out_value = &temp1;
        buf_set_u32(&temp1, 0, 7, reg_addr);
+       fields[1].in_value = NULL;
 
+       fields[2].num_bits = 1;
        uint8_t temp2;
+       fields[2].out_value = &temp2;
        buf_set_u32(&temp2, 0, 1, 1);
+       fields[2].in_value = NULL;
+
+       jtag_add_dr_scan(etb_reg->etb->tap, 3, fields, TAP_IDLE);
 
        return ERROR_OK;
 }
index f4adc8d05aece861ef660b33c63c04c229aacfc7..ec157d36105b198c68971d00bf71b8ec58d524c7 100644 (file)
@@ -79,7 +79,7 @@ int gdb_read_smp_packet(struct connection *connection,
                                hex_buffer[2 * i + 1] = DIGITS[t & 0xf];
                        }
 
-                       gdb_put_packet(connection, hex_buffer, len * 2);
+                       retval = gdb_put_packet(connection, hex_buffer, len * 2);
 
                        free(hex_buffer);
                }
@@ -95,6 +95,7 @@ int gdb_write_smp_packet(struct connection *connection,
 {
        char *separator;
        int coreid = 0;
+       int retval = ERROR_OK;
 
        /* skip command character */
        if (target->smp)
@@ -104,13 +105,13 @@ int gdb_write_smp_packet(struct connection *connection,
                        packet+=2;
                        coreid = strtoul(packet, &separator, 16);
                        target->gdb_service->core[1] = coreid;
-                       gdb_put_packet(connection, "OK", 2);
+                       retval = gdb_put_packet(connection, "OK", 2);
                }
        }
        else
        {
-               gdb_put_packet(connection,"E01",3);
+               retval = gdb_put_packet(connection,"E01",3);
        }
 
-       return ERROR_OK;
+       return retval;
 }