target/arm7_9_common: use coherent syntax in struct initialization
[openocd.git] / src / target / arm7_9_common.c
index 07beef51d4dd46d1c9405f501ae83be04e60e8fa..4fedc0d8fc3ed91800e6feb62db29b57822fe879 100644 (file)
@@ -24,9 +24,7 @@
  *   GNU General Public License for more details.                          *
  *                                                                         *
  *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -103,7 +101,8 @@ static void arm7_9_assign_wp(struct arm7_9_common *arm7_9, struct breakpoint *br
                arm7_9->wp_available--;
        } else
                LOG_ERROR("BUG: no hardware comparator available");
-       LOG_DEBUG("BPID: %d (0x%08" PRIx32 ") using hw wp: %d",
+
+       LOG_DEBUG("BPID: %" PRId32 " (0x%08" TARGET_PRIxADDR ") using hw wp: %d",
                        breakpoint->unique_id,
                        breakpoint->address,
                        breakpoint->set);
@@ -189,7 +188,7 @@ static int arm7_9_set_breakpoint(struct target *target, struct breakpoint *break
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
        int retval = ERROR_OK;
 
-       LOG_DEBUG("BPID: %d, Address: 0x%08" PRIx32 ", Type: %d",
+       LOG_DEBUG("BPID: %" PRId32 ", Address: 0x%08" TARGET_PRIxADDR ", Type: %d",
                breakpoint->unique_id,
                breakpoint->address,
                breakpoint->type);
@@ -246,7 +245,7 @@ static int arm7_9_set_breakpoint(struct target *target, struct breakpoint *break
                        if (retval != ERROR_OK)
                                return retval;
                        if (verify != arm7_9->arm_bkpt) {
-                               LOG_ERROR("Unable to set 32 bit software breakpoint at address %08" PRIx32
+                               LOG_ERROR("Unable to set 32 bit software breakpoint at address %08" TARGET_PRIxADDR
                                                " - check that memory is read/writable", breakpoint->address);
                                return ERROR_OK;
                        }
@@ -266,7 +265,7 @@ static int arm7_9_set_breakpoint(struct target *target, struct breakpoint *break
                        if (retval != ERROR_OK)
                                return retval;
                        if (verify != arm7_9->thumb_bkpt) {
-                               LOG_ERROR("Unable to set thumb software breakpoint at address %08" PRIx32
+                               LOG_ERROR("Unable to set thumb software breakpoint at address %08" TARGET_PRIxADDR
                                                " - check that memory is read/writable", breakpoint->address);
                                return ERROR_OK;
                        }
@@ -301,7 +300,7 @@ static int arm7_9_unset_breakpoint(struct target *target, struct breakpoint *bre
        int retval = ERROR_OK;
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       LOG_DEBUG("BPID: %d, Address: 0x%08" PRIx32,
+       LOG_DEBUG("BPID: %" PRId32 ", Address: 0x%08" TARGET_PRIxADDR,
                breakpoint->unique_id,
                breakpoint->address);
 
@@ -311,7 +310,7 @@ static int arm7_9_unset_breakpoint(struct target *target, struct breakpoint *bre
        }
 
        if (breakpoint->type == BKPT_HARD) {
-               LOG_DEBUG("BPID: %d Releasing hw wp: %d",
+               LOG_DEBUG("BPID: %" PRId32 " Releasing hw wp: %d",
                        breakpoint->unique_id,
                        breakpoint->set);
                if (breakpoint->set == 1) {
@@ -350,12 +349,12 @@ static int arm7_9_unset_breakpoint(struct target *target, struct breakpoint *bre
                        if (retval != ERROR_OK)
                                return retval;
                        current_instr = target_buffer_get_u16(target, (uint8_t *)&current_instr);
-                       if (current_instr == arm7_9->thumb_bkpt)
+                       if (current_instr == arm7_9->thumb_bkpt) {
                                retval = target_write_memory(target,
                                                breakpoint->address, 2, 1, breakpoint->orig_instr);
                                if (retval != ERROR_OK)
                                        return retval;
-
+                       }
                }
 
                if (--arm7_9->sw_breakpoint_count == 0) {
@@ -628,16 +627,16 @@ int arm7_9_execute_sys_speed(struct target *target)
        /* set RESTART instruction */
        if (arm7_9->need_bypass_before_restart) {
                arm7_9->need_bypass_before_restart = 0;
-               retval = arm_jtag_set_instr(jtag_info, 0xf, NULL, TAP_IDLE);
+               retval = arm_jtag_set_instr(jtag_info->tap, 0xf, NULL, TAP_IDLE);
                if (retval != ERROR_OK)
                        return retval;
        }
-       retval = arm_jtag_set_instr(jtag_info, 0x4, NULL, TAP_IDLE);
+       retval = arm_jtag_set_instr(jtag_info->tap, 0x4, NULL, TAP_IDLE);
        if (retval != ERROR_OK)
                return retval;
 
-       long long then = timeval_ms();
-       int timeout;
+       int64_t then = timeval_ms();
+       bool timeout;
        while (!(timeout = ((timeval_ms()-then) > 1000))) {
                /* read debug status register */
                embeddedice_read_reg(dbg_stat);
@@ -682,11 +681,11 @@ static int arm7_9_execute_fast_sys_speed(struct target *target)
        /* set RESTART instruction */
        if (arm7_9->need_bypass_before_restart) {
                arm7_9->need_bypass_before_restart = 0;
-               retval = arm_jtag_set_instr(jtag_info, 0xf, NULL, TAP_IDLE);
+               retval = arm_jtag_set_instr(jtag_info->tap, 0xf, NULL, TAP_IDLE);
                if (retval != ERROR_OK)
                        return retval;
        }
-       retval = arm_jtag_set_instr(jtag_info, 0x4, NULL, TAP_IDLE);
+       retval = arm_jtag_set_instr(jtag_info->tap, 0x4, NULL, TAP_IDLE);
        if (retval != ERROR_OK)
                return retval;
 
@@ -875,6 +874,13 @@ int arm7_9_assert_reset(struct target *target)
        enum reset_types jtag_reset_config = jtag_get_reset_config();
        bool use_event = false;
 
+       /* TODO: apply hw reset signal in not examined state */
+       if (!(target_was_examined(target))) {
+               LOG_WARNING("Reset is not asserted because the target is not examined.");
+               LOG_WARNING("Use a reset button or power cycle the target.");
+               return ERROR_TARGET_NOT_EXAMINED;
+       }
+
        LOG_DEBUG("target->state: %s", target_state_name(target));
 
        if (target_has_event_action(target, TARGET_EVENT_RESET_ASSERT))
@@ -1135,20 +1141,20 @@ int arm7_9_soft_reset_halt(struct target *target)
        cpsr &= ~0xff;
        cpsr |= 0xd3;
        arm_set_cpsr(arm, cpsr);
-       arm->cpsr->dirty = 1;
+       arm->cpsr->dirty = true;
 
        /* start fetching from 0x0 */
        buf_set_u32(arm->pc->value, 0, 32, 0x0);
-       arm->pc->dirty = 1;
-       arm->pc->valid = 1;
+       arm->pc->dirty = true;
+       arm->pc->valid = true;
 
        /* reset registers */
        for (i = 0; i <= 14; i++) {
                struct reg *r = arm_reg_current(arm, i);
 
                buf_set_u32(r->value, 0, 32, 0xffffffff);
-               r->dirty = 1;
-               r->valid = 1;
+               r->dirty = true;
+               r->valid = true;
        }
 
        retval = target_call_event_callbacks(target, TARGET_EVENT_HALTED);
@@ -1340,7 +1346,7 @@ static int arm7_9_debug_entry(struct target *target)
                buf_set_u32(r->value, 0, 32, context[i]);
                /* r0 and r15 (pc) have to be restored later */
                r->dirty = (i == 0) || (i == 15);
-               r->valid = 1;
+               r->valid = true;
        }
 
        LOG_DEBUG("entered debug state at PC 0x%" PRIx32 "", context[15]);
@@ -1353,8 +1359,8 @@ static int arm7_9_debug_entry(struct target *target)
                if (retval != ERROR_OK)
                        return retval;
                buf_set_u32(arm->spsr->value, 0, 32, spsr);
-               arm->spsr->dirty = 0;
-               arm->spsr->valid = 1;
+               arm->spsr->dirty = false;
+               arm->spsr->valid = true;
        }
 
        retval = jtag_execute_queue();
@@ -1405,13 +1411,13 @@ static int arm7_9_full_context(struct target *target)
                uint32_t mask = 0;
                uint32_t *reg_p[16];
                int j;
-               int valid = 1;
+               bool valid = true;
 
                /* check if there are invalid registers in the current mode
                 */
                for (j = 0; j <= 16; j++) {
-                       if (ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i), j).valid == 0)
-                               valid = 0;
+                       if (!ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i), j).valid)
+                               valid = false;
                }
 
                if (!valid) {
@@ -1425,8 +1431,8 @@ static int arm7_9_full_context(struct target *target)
                        arm7_9->write_xpsr_im8(target, tmp_cpsr & 0xff, 0, 0);
 
                        for (j = 0; j < 15; j++) {
-                               if (ARMV4_5_CORE_REG_MODE(arm->core_cache,
-                                               armv4_5_number_to_mode(i), j).valid == 0) {
+                               if (!ARMV4_5_CORE_REG_MODE(arm->core_cache,
+                                               armv4_5_number_to_mode(i), j).valid) {
                                        reg_p[j] = (uint32_t *)ARMV4_5_CORE_REG_MODE(
                                                        arm->core_cache,
                                                        armv4_5_number_to_mode(i),
@@ -1434,10 +1440,10 @@ static int arm7_9_full_context(struct target *target)
                                        mask |= 1 << j;
                                        ARMV4_5_CORE_REG_MODE(arm->core_cache,
                                                armv4_5_number_to_mode(i),
-                                               j).valid = 1;
+                                               j).valid = true;
                                        ARMV4_5_CORE_REG_MODE(arm->core_cache,
                                                armv4_5_number_to_mode(i),
-                                               j).dirty = 0;
+                                               j).dirty = false;
                                }
                        }
 
@@ -1446,15 +1452,15 @@ static int arm7_9_full_context(struct target *target)
                                arm7_9->read_core_regs(target, mask, reg_p);
 
                        /* check if the PSR has to be read */
-                       if (ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
-                                       16).valid == 0) {
+                       if (!ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
+                                       16).valid) {
                                arm7_9->read_xpsr(target,
                                        (uint32_t *)ARMV4_5_CORE_REG_MODE(arm->core_cache,
                                                armv4_5_number_to_mode(i), 16).value, 1);
                                ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
-                                       16).valid = 1;
+                                       16).valid = true;
                                ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
-                                       16).dirty = 0;
+                                       16).dirty = false;
                        }
                }
        }
@@ -1488,7 +1494,7 @@ static int arm7_9_restore_context(struct target *target)
        struct reg *reg;
        enum arm_mode current_mode = arm->core_mode;
        int i, j;
-       int dirty;
+       bool dirty;
        int mode_change;
 
        LOG_DEBUG("-");
@@ -1512,15 +1518,15 @@ static int arm7_9_restore_context(struct target *target)
        for (i = 0; i < 6; i++) {
                LOG_DEBUG("examining %s mode",
                        arm_mode_name(arm->core_mode));
-               dirty = 0;
+               dirty = false;
                mode_change = 0;
                /* check if there are dirty registers in the current mode
                */
                for (j = 0; j <= 16; j++) {
                        reg = &ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i), j);
-                       if (reg->dirty == 1) {
-                               if (reg->valid == 1) {
-                                       dirty = 1;
+                       if (reg->dirty) {
+                               if (reg->valid) {
+                                       dirty = true;
                                        LOG_DEBUG("examining dirty reg: %s", reg->name);
                                        struct arm_reg *reg_arch_info;
                                        reg_arch_info = reg->arch_info;
@@ -1561,12 +1567,12 @@ static int arm7_9_restore_context(struct target *target)
                                                armv4_5_number_to_mode(i),
                                                j);
 
-                               if (reg->dirty == 1) {
+                               if (reg->dirty) {
                                        regs[j] = buf_get_u32(reg->value, 0, 32);
                                        mask |= 1 << j;
                                        num_regs++;
-                                       reg->dirty = 0;
-                                       reg->valid = 1;
+                                       reg->dirty = false;
+                                       reg->valid = true;
                                        LOG_DEBUG("writing register %i mode %s "
                                                "with value 0x%8.8" PRIx32, j,
                                                arm_mode_name(arm->core_mode),
@@ -1608,15 +1614,15 @@ static int arm7_9_restore_context(struct target *target)
                arm7_9->write_xpsr(target,
                        buf_get_u32(arm->cpsr->value, 0, 32)
                        & ~0x20, 0);
-               arm->cpsr->dirty = 0;
-               arm->cpsr->valid = 1;
+               arm->cpsr->dirty = false;
+               arm->cpsr->valid = true;
        }
 
        /* restore PC */
        LOG_DEBUG("writing PC with value 0x%8.8" PRIx32,
                buf_get_u32(arm->pc->value, 0, 32));
        arm7_9->write_pc(target, buf_get_u32(arm->pc->value, 0, 32));
-       arm->pc->dirty = 0;
+       arm->pc->dirty = false;
 
        return ERROR_OK;
 }
@@ -1639,11 +1645,11 @@ static int arm7_9_restart_core(struct target *target)
        if (arm7_9->need_bypass_before_restart) {
                arm7_9->need_bypass_before_restart = 0;
 
-               retval = arm_jtag_set_instr(jtag_info, 0xf, NULL, TAP_IDLE);
+               retval = arm_jtag_set_instr(jtag_info->tap, 0xf, NULL, TAP_IDLE);
                if (retval != ERROR_OK)
                        return retval;
        }
-       retval = arm_jtag_set_instr(jtag_info, 0x4, NULL, TAP_IDLE);
+       retval = arm_jtag_set_instr(jtag_info->tap, 0x4, NULL, TAP_IDLE);
        if (retval != ERROR_OK)
                return retval;
 
@@ -1687,7 +1693,7 @@ static void arm7_9_enable_breakpoints(struct target *target)
 
 int arm7_9_resume(struct target *target,
        int current,
-       uint32_t address,
+       target_addr_t address,
        int handle_breakpoints,
        int debug_execution)
 {
@@ -1719,7 +1725,7 @@ int arm7_9_resume(struct target *target,
                breakpoint = breakpoint_find(target,
                                buf_get_u32(arm->pc->value, 0, 32));
                if (breakpoint != NULL) {
-                       LOG_DEBUG("unset breakpoint at 0x%8.8" PRIx32 " (id: %d)",
+                       LOG_DEBUG("unset breakpoint at 0x%8.8" TARGET_PRIxADDR " (id: %" PRId32,
                                breakpoint->address,
                                breakpoint->unique_id);
                        retval = arm7_9_unset_breakpoint(target, breakpoint);
@@ -1778,7 +1784,7 @@ int arm7_9_resume(struct target *target,
                        LOG_DEBUG("new PC after step: 0x%8.8" PRIx32,
                                buf_get_u32(arm->pc->value, 0, 32));
 
-                       LOG_DEBUG("set breakpoint at 0x%8.8" PRIx32 "", breakpoint->address);
+                       LOG_DEBUG("set breakpoint at 0x%8.8" TARGET_PRIxADDR "", breakpoint->address);
                        retval = arm7_9_set_breakpoint(target, breakpoint);
                        if (retval != ERROR_OK)
                                return retval;
@@ -1889,7 +1895,7 @@ void arm7_9_disable_eice_step(struct target *target)
        embeddedice_store_reg(&arm7_9->eice_cache->reg_list[EICE_W1_CONTROL_VALUE]);
 }
 
-int arm7_9_step(struct target *target, int current, uint32_t address, int handle_breakpoints)
+int arm7_9_step(struct target *target, int current, target_addr_t address, int handle_breakpoints)
 {
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
        struct arm *arm = &arm7_9->arm;
@@ -2018,8 +2024,8 @@ static int arm7_9_read_core_reg(struct target *target, struct reg *r,
        if (retval != ERROR_OK)
                return retval;
 
-       r->valid = 1;
-       r->dirty = 0;
+       r->valid = true;
+       r->dirty = false;
        buf_set_u32(r->value, 0, 32, value);
 
        if ((mode != ARM_MODE_ANY) && (mode != arm->core_mode)
@@ -2033,7 +2039,7 @@ static int arm7_9_read_core_reg(struct target *target, struct reg *r,
 }
 
 static int arm7_9_write_core_reg(struct target *target, struct reg *r,
-       int num, enum arm_mode mode, uint32_t value)
+       int num, enum arm_mode mode, uint8_t *value)
 {
        uint32_t reg[16];
        struct arm_reg *areg = r->arch_info;
@@ -2058,7 +2064,7 @@ static int arm7_9_write_core_reg(struct target *target, struct reg *r,
 
        if ((num >= 0) && (num <= 15)) {
                /* write a normal core register */
-               reg[num] = value;
+               reg[num] = buf_get_u32(value, 0, 32);
 
                arm7_9->write_core_regs(target, 1 << num, reg);
        } else {
@@ -2067,15 +2073,16 @@ static int arm7_9_write_core_reg(struct target *target, struct reg *r,
                */
                int spsr = (areg->mode != ARM_MODE_ANY);
 
+               uint32_t t = buf_get_u32(value, 0, 32);
                /* if we're writing the CPSR, mask the T bit */
                if (!spsr)
-                       value &= ~0x20;
+                       t &= ~0x20;
 
-               arm7_9->write_xpsr(target, value, spsr);
+               arm7_9->write_xpsr(target, t, spsr);
        }
 
-       r->valid = 1;
-       r->dirty = 0;
+       r->valid = true;
+       r->dirty = false;
 
        if ((mode != ARM_MODE_ANY) && (mode != arm->core_mode)
                        && (areg->mode != ARM_MODE_ANY)) {
@@ -2088,7 +2095,7 @@ static int arm7_9_write_core_reg(struct target *target, struct reg *r,
 }
 
 int arm7_9_read_memory(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t size,
        uint32_t count,
        uint8_t *buffer)
@@ -2103,7 +2110,7 @@ int arm7_9_read_memory(struct target *target,
        int retval;
        int last_reg = 0;
 
-       LOG_DEBUG("address: 0x%8.8" PRIx32 ", size: 0x%8.8" PRIx32 ", count: 0x%8.8" PRIx32 "",
+       LOG_DEBUG("address: 0x%8.8" TARGET_PRIxADDR ", size: 0x%8.8" PRIx32 ", count: 0x%8.8" PRIx32 "",
                address, size, count);
 
        if (target->state != TARGET_HALTED) {
@@ -2241,7 +2248,8 @@ int arm7_9_read_memory(struct target *target,
 
        if (((cpsr & 0x1f) == ARM_MODE_ABT) && (arm->core_mode != ARM_MODE_ABT)) {
                LOG_WARNING(
-                       "memory read caused data abort (address: 0x%8.8" PRIx32 ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
+                       "memory read caused data abort "
+                       "(address: 0x%8.8" TARGET_PRIxADDR ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
                        address,
                        size,
                        count);
@@ -2257,7 +2265,7 @@ int arm7_9_read_memory(struct target *target,
 }
 
 int arm7_9_write_memory(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t size,
        uint32_t count,
        const uint8_t *buffer)
@@ -2454,7 +2462,8 @@ int arm7_9_write_memory(struct target *target,
 
        if (((cpsr & 0x1f) == ARM_MODE_ABT) && (arm->core_mode != ARM_MODE_ABT)) {
                LOG_WARNING(
-                       "memory write caused data abort (address: 0x%8.8" PRIx32 ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
+                       "memory write caused data abort "
+                       "(address: 0x%8.8" TARGET_PRIxADDR ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
                        address,
                        size,
                        count);
@@ -2469,6 +2478,37 @@ int arm7_9_write_memory(struct target *target,
        return ERROR_OK;
 }
 
+int arm7_9_write_memory_opt(struct target *target,
+       target_addr_t address,
+       uint32_t size,
+       uint32_t count,
+       const uint8_t *buffer)
+{
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       int retval;
+
+       if (size == 4 && count > 32 && arm7_9->bulk_write_memory) {
+               /* Attempt to do a bulk write */
+               retval = arm7_9->bulk_write_memory(target, address, count, buffer);
+
+               if (retval == ERROR_OK)
+                       return ERROR_OK;
+       }
+
+       return arm7_9->write_memory(target, address, size, count, buffer);
+}
+
+int arm7_9_write_memory_no_opt(struct target *target,
+       uint32_t address,
+       uint32_t size,
+       uint32_t count,
+       const uint8_t *buffer)
+{
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+
+       return arm7_9->write_memory(target, address, size, count, buffer);
+}
+
 static int dcc_count;
 static const uint8_t *dcc_buffer;
 
@@ -2539,16 +2579,18 @@ static const uint32_t dcc_code[] = {
 };
 
 int arm7_9_bulk_write_memory(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t count,
        const uint8_t *buffer)
 {
        int retval;
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
-       int i;
+
+       if (address % 4 != 0)
+               return ERROR_TARGET_UNALIGNED_ACCESS;
 
        if (!arm7_9->dcc_downloads)
-               return target_write_memory(target, address, 4, count, buffer);
+               return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
 
        /* regrab previously allocated working_area, or allocate a new one */
        if (!arm7_9->dcc_working_area) {
@@ -2557,15 +2599,15 @@ int arm7_9_bulk_write_memory(struct target *target,
                /* make sure we have a working area */
                if (target_alloc_working_area(target, 24, &arm7_9->dcc_working_area) != ERROR_OK) {
                        LOG_INFO("no working area available, falling back to memory writes");
-                       return target_write_memory(target, address, 4, count, buffer);
+                       return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
                }
 
                /* copy target instructions to target endianness */
-               for (i = 0; i < 6; i++)
-                       target_buffer_set_u32(target, dcc_code_buf + i*4, dcc_code[i]);
+               target_buffer_set_u32_array(target, dcc_code_buf, ARRAY_SIZE(dcc_code), dcc_code);
 
-               /* write DCC code to working area */
-               retval = target_write_memory(target,
+               /* write DCC code to working area, using the non-optimized
+                * memory write to avoid ending up here again */
+               retval = arm7_9_write_memory_no_opt(target,
                                arm7_9->dcc_working_area->address, 4, 6, dcc_code_buf);
                if (retval != ERROR_OK)
                        return retval;
@@ -2593,7 +2635,7 @@ int arm7_9_bulk_write_memory(struct target *target,
                uint32_t endaddress = buf_get_u32(reg_params[0].value, 0, 32);
                if (endaddress != (address + count*4)) {
                        LOG_ERROR(
-                               "DCC write failed, expected end address 0x%08" PRIx32 " got 0x%0" PRIx32 "",
+                               "DCC write failed, expected end address 0x%08" TARGET_PRIxADDR " got 0x%0" PRIx32 "",
                                (address + count*4),
                                endaddress);
                        retval = ERROR_FAIL;
@@ -2817,12 +2859,12 @@ int arm7_9_init_arch_info(struct target *target, struct arm7_9_common *arm7_9)
                return retval;
 
        return target_register_timer_callback(arm7_9_handle_target_request,
-               1, 1, target);
+               1, TARGET_TIMER_TYPE_PERIODIC, target);
 }
 
 static const struct command_registration arm7_9_any_command_handlers[] = {
        {
-               "dbgrq",
+               .name = "dbgrq",
                .handler = handle_arm7_9_dbgrq_command,
                .mode = COMMAND_ANY,
                .usage = "['enable'|'disable']",
@@ -2830,7 +2872,7 @@ static const struct command_registration arm7_9_any_command_handlers[] = {
                        "for target halt requests",
        },
        {
-               "fast_memory_access",
+               .name = "fast_memory_access",
                .handler = handle_arm7_9_fast_memory_access_command,
                .mode = COMMAND_ANY,
                .usage = "['enable'|'disable']",
@@ -2838,7 +2880,7 @@ static const struct command_registration arm7_9_any_command_handlers[] = {
                        "but potentially safer accesses",
        },
        {
-               "dcc_downloads",
+               .name = "dcc_downloads",
                .handler = handle_arm7_9_dcc_downloads_command,
                .mode = COMMAND_ANY,
                .usage = "['enable'|'disable']",

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)