remove in_handler usage
[openocd.git] / src / target / xscale.c
index 0a162959cf4609fbb4aab4ddb544ae362593c2bc..982c42737510371394bdd0ff68ae8157e42a9aaf 100644 (file)
@@ -225,11 +225,11 @@ int xscale_jtag_set_instr(jtag_tap_t *tap, u32 new_instr)
                field.num_bits = tap->ir_length;
                field.out_value = calloc(CEIL(field.num_bits, 8), 1);
                buf_set_u32(field.out_value, 0, field.num_bits, new_instr);
-               field.out_mask = NULL;
+               
                field.in_value = NULL;
                jtag_set_check_value(&field, tap->expected, tap->expected_mask, NULL);
 
-               jtag_add_ir_scan(1, &field, -1);
+               jtag_add_ir_scan(1, &field, TAP_INVALID);
 
                free(field.out_value);
        }
@@ -261,28 +261,28 @@ int xscale_read_dcsr(target_t *target)
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 3;
        fields[0].out_value = &field0;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = NULL;
        jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 32;
        fields[1].out_value = NULL;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
+       
 
        fields[2].tap = xscale->jtag_info.tap;
        fields[2].num_bits = 1;
        fields[2].out_value = &field2;
-       fields[2].out_mask = NULL;
+       
        fields[2].in_value = NULL;
        jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
 
-       jtag_add_dr_scan(3, fields, -1);
+       jtag_add_dr_scan(3, fields, TAP_INVALID);
 
        if ((retval = jtag_execute_queue()) != ERROR_OK)
        {
@@ -302,7 +302,7 @@ int xscale_read_dcsr(target_t *target)
 
        jtag_add_end_state(TAP_IDLE);
 
-       jtag_add_dr_scan(3, fields, -1);
+       jtag_add_dr_scan(3, fields, TAP_INVALID);
 
        /* DANGER!!! this must be here. It will make sure that the arguments
         * to jtag_set_check_value() does not go out of scope! */
@@ -339,30 +339,30 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 3;
        fields[0].out_value = NULL;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = NULL;
        jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 32;
        fields[1].out_value = NULL;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = NULL;
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
+       
 
        fields[2].tap = xscale->jtag_info.tap;
        fields[2].num_bits = 1;
        fields[2].out_value = NULL;
-       fields[2].out_mask = NULL;
+       
        fields[2].in_value = NULL;
        jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
 
        jtag_add_end_state(TAP_IDLE);
        xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx);
-       jtag_add_runtest(1, -1); /* ensures that we're in the TAP_IDLE state as the above could be a no-op */
+       jtag_add_runtest(1, TAP_INVALID); /* ensures that we're in the TAP_IDLE state as the above could be a no-op */
 
        /* repeat until all words have been collected */
        int attempts=0;
@@ -373,8 +373,8 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
                for (i = words_done; i < num_words; i++)
                {
                        fields[0].in_value = &field0[i];
-                       fields[1].in_handler = buf_to_u32_handler;
-                       fields[1].in_handler_priv = (u8*)&field1[i];
+                       fields[1].in_handler = buf_to_u32_handler; /* deprecated! invoke this from user code! */
+                       fields[1].in_handler_priv = (u8*)&field1[i]; 
 
                        jtag_add_pathmove(3, path);
                        jtag_add_dr_scan(3, fields, TAP_IDLE);
@@ -458,24 +458,24 @@ int xscale_read_tx(target_t *target, int consume)
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 3;
        fields[0].out_value = NULL;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = &field0_in;
        jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 32;
        fields[1].out_value = NULL;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_TX].value;
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
+       
 
        fields[2].tap = xscale->jtag_info.tap;
        fields[2].num_bits = 1;
        fields[2].out_value = NULL;
-       fields[2].out_mask = NULL;
+       
        fields[2].in_value = NULL;
        jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
 
@@ -554,24 +554,24 @@ int xscale_write_rx(target_t *target)
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 3;
        fields[0].out_value = &field0_out;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = &field0_in;
        jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 32;
        fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_RX].value;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = NULL;
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
+       
 
        fields[2].tap = xscale->jtag_info.tap;
        fields[2].num_bits = 1;
        fields[2].out_value = &field2;
-       fields[2].out_mask = NULL;
+       
        fields[2].in_value = NULL;
        jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
 
@@ -729,28 +729,28 @@ int xscale_write_dcsr(target_t *target, int hold_rst, int ext_dbg_brk)
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 3;
        fields[0].out_value = &field0;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = NULL;
        jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 32;
        fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = NULL;
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
+       
 
        fields[2].tap = xscale->jtag_info.tap;
        fields[2].num_bits = 1;
        fields[2].out_value = &field2;
-       fields[2].out_mask = NULL;
+       
        fields[2].in_value = NULL;
        jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
 
-       jtag_add_dr_scan(3, fields, -1);
+       jtag_add_dr_scan(3, fields, TAP_INVALID);
 
        if ((retval = jtag_execute_queue()) != ERROR_OK)
        {
@@ -805,24 +805,24 @@ int xscale_load_ic(target_t *target, int mini, u32 va, u32 buffer[8])
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 6;
        fields[0].out_value = &cmd;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = NULL;
-       fields[0].in_check_value = NULL;
-       fields[0].in_check_mask = NULL;
+       
+       
        fields[0].in_handler = NULL;
-       fields[0].in_handler_priv = NULL;
+       
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 27;
        fields[1].out_value = packet;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
+       
 
-       jtag_add_dr_scan(2, fields, -1);
+       jtag_add_dr_scan(2, fields, TAP_INVALID);
 
        fields[0].num_bits = 32;
        fields[0].out_value = packet;
@@ -833,8 +833,12 @@ int xscale_load_ic(target_t *target, int mini, u32 va, u32 buffer[8])
        for (word = 0; word < 8; word++)
        {
                buf_set_u32(packet, 0, 32, buffer[word]);
-               cmd = parity(*((u32*)packet));
-               jtag_add_dr_scan(2, fields, -1);
+
+               u32 value;
+               memcpy(&value, packet, sizeof(u32));
+               cmd = parity(value);
+
+               jtag_add_dr_scan(2, fields, TAP_INVALID);
        }
 
        jtag_execute_queue();
@@ -863,24 +867,24 @@ int xscale_invalidate_ic_line(target_t *target, u32 va)
        fields[0].tap = xscale->jtag_info.tap;
        fields[0].num_bits = 6;
        fields[0].out_value = &cmd;
-       fields[0].out_mask = NULL;
+       
        fields[0].in_value = NULL;
-       fields[0].in_check_value = NULL;
-       fields[0].in_check_mask = NULL;
+       
+       
        fields[0].in_handler = NULL;
-       fields[0].in_handler_priv = NULL;
+       
 
        fields[1].tap = xscale->jtag_info.tap;
        fields[1].num_bits = 27;
        fields[1].out_value = packet;
-       fields[1].out_mask = NULL;
+       
        fields[1].in_value = NULL;
-       fields[1].in_check_value = NULL;
-       fields[1].in_check_mask = NULL;
+       
+       
        fields[1].in_handler = NULL;
-       fields[1].in_handler_priv = NULL;
+       
 
-       jtag_add_dr_scan(2, fields, -1);
+       jtag_add_dr_scan(2, fields, TAP_INVALID);
 
        return ERROR_OK;
 }
@@ -1450,17 +1454,18 @@ static int xscale_step_inner(struct target_s *target, int current, u32 address,
        armv4_5_common_t *armv4_5 = target->arch_info;
        xscale_common_t *xscale = armv4_5->arch_info;
 
-       u32 current_pc, next_pc;
+       u32 next_pc;
        int retval;
        int i;
 
-
        target->debug_reason = DBG_REASON_SINGLESTEP;
 
        /* calculate PC of next instruction */
        if ((retval = arm_simulate_step(target, &next_pc)) != ERROR_OK)
        {
-               u32 current_opcode;
+               u32 current_opcode, current_pc;
+               current_pc = buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32);
+
                target_read_u32(target, current_pc, &current_opcode);
                LOG_ERROR("BUG: couldn't calculate PC of next instruction, current opcode was 0x%8.8x", current_opcode);
                return retval;
@@ -1630,7 +1635,7 @@ int xscale_deassert_reset(target_t *target)
        u32 binary_size;
 
        u32 buf_cnt;
-       int i;
+       u32 i;
        int retval;
 
        breakpoint_t *breakpoint = target->breakpoints;
@@ -1927,7 +1932,7 @@ int xscale_read_memory(struct target_s *target, u32 address, u32 size, u32 count
        armv4_5_common_t *armv4_5 = target->arch_info;
        xscale_common_t *xscale = armv4_5->arch_info;
        u32 *buf32;
-       int i;
+       u32 i;
        int retval;
 
        LOG_DEBUG("address: 0x%8.8x, size: 0x%8.8x, count: 0x%8.8x", address, size, count);
@@ -2932,7 +2937,7 @@ int xscale_analyze_trace(target_t *target, command_context_t *cmd_ctx)
                                                (((instruction.type == ARM_B) ||
                                                        (instruction.type == ARM_BL) ||
                                                        (instruction.type == ARM_BLX)) &&
-                                                       (instruction.info.b_bl_bx_blx.target_address != -1)))
+                                                       (instruction.info.b_bl_bx_blx.target_address != 0xffffffff)))
                                        {
                                                xscale->trace.current_pc = instruction.info.b_bl_bx_blx.target_address;
                                        }

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)