]> git.sur5r.net Git - openocd/blobdiff - src/target/arm9tdmi.c
ADIv5 clean up AP selection and register caching
[openocd] / src / target / arm9tdmi.c
index 05f024644d968b398e4166477f6e72dcf4cbe765..77b01b16052d420a5af8567487a812ce09b68a07 100644 (file)
@@ -269,8 +269,6 @@ int arm9tdmi_clock_data_in(struct arm_jtag *jtag_info, uint32_t *in)
        return ERROR_OK;
 }
 
-extern void arm_endianness(uint8_t *tmp, void *in, int size, int be, int flip);
-
 static int arm9endianness(jtag_callback_data_t arg,
        jtag_callback_data_t size, jtag_callback_data_t be,
        jtag_callback_data_t captured)
@@ -679,7 +677,8 @@ static void arm9tdmi_branch_resume_thumb(struct target *target)
        /* fetch NOP, LDM in EXECUTE stage (1st cycle) */
        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
        /* nothing fetched, LDM in EXECUTE stage (2nd cycle) */
-       arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32) | 1, NULL, 0);
+       arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP,
+                       buf_get_u32(armv4_5->pc->value, 0, 32) | 1, NULL, 0);
        /* nothing fetched, LDM in EXECUTE stage (3rd cycle) */
        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
 
@@ -836,6 +835,12 @@ COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
        struct reg *vector_catch;
        uint32_t vector_catch_value;
 
+       if (!target_was_examined(target))
+       {
+               LOG_ERROR("Target not examined yet");
+               return ERROR_FAIL;
+       }
+
        /* it's uncommon, but some ARM7 chips can support this */
        if (arm7_9->common_magic != ARM7_9_COMMON_MAGIC
                        || !arm7_9->has_vector_catch) {
@@ -914,7 +919,9 @@ static const struct command_registration arm9tdmi_exec_command_handlers[] = {
                .name = "vector_catch",
                .handler = handle_arm9tdmi_catch_vectors_command,
                .mode = COMMAND_EXEC,
-               .usage = "[all|none|reset|undef|swi|pabt|dabt|irq|fiq] ...",
+               .help = "Display, after optionally updating, configuration "
+                       "of vector catch unit.",
+               .usage = "[all|none|(reset|undef|swi|pabt|dabt|irq|fiq)*]",
        },
        COMMAND_REGISTRATION_DONE
 };
@@ -937,7 +944,7 @@ struct target_type arm9tdmi_target =
        .name = "arm9tdmi",
 
        .poll = arm7_9_poll,
-       .arch_state = armv4_5_arch_state,
+       .arch_state = arm_arch_state,
 
        .target_request_data = arm7_9_target_request_data,
 
@@ -949,7 +956,7 @@ struct target_type arm9tdmi_target =
        .deassert_reset = arm7_9_deassert_reset,
        .soft_reset_halt = arm7_9_soft_reset_halt,
 
-       .get_gdb_reg_list = armv4_5_get_gdb_reg_list,
+       .get_gdb_reg_list = arm_get_gdb_reg_list,
 
        .read_memory = arm7_9_read_memory,
        .write_memory = arm7_9_write_memory,
@@ -969,4 +976,5 @@ struct target_type arm9tdmi_target =
        .target_create = arm9tdmi_target_create,
        .init_target = arm9tdmi_init_target,
        .examine = arm7_9_examine,
+       .check_reset = arm7_9_check_reset,
 };