]> git.sur5r.net Git - openocd/blobdiff - src/target/arm9tdmi.c
ZY1000 help/usage fixups
[openocd] / src / target / arm9tdmi.c
index b582eae3319ea3cff8efe2d4a29a1965c64d623b..823e962ed0be22f618567594d5b3fdcfd8af1d46 100644 (file)
@@ -30,6 +30,7 @@
 #include "arm9tdmi.h"
 #include "target_type.h"
 #include "register.h"
+#include "arm_opcodes.h"
 
 
 /*
@@ -268,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)
@@ -664,7 +663,7 @@ static void arm9tdmi_branch_resume_thumb(struct target *target)
        LOG_DEBUG("-");
 
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
-       struct armv4_5_common_s *armv4_5 = &arm7_9->armv4_5_common;
+       struct arm *armv4_5 = &arm7_9->armv4_5_common;
        struct arm_jtag *jtag_info = &arm7_9->jtag_info;
        struct reg *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT];
 
@@ -751,10 +750,9 @@ void arm9tdmi_disable_single_step(struct target *target)
 static void arm9tdmi_build_reg_cache(struct target *target)
 {
        struct reg_cache **cache_p = register_get_last_cache_p(&target->reg_cache);
-       struct armv4_5_common_s *armv4_5 = target_to_armv4_5(target);
+       struct arm *armv4_5 = target_to_arm(target);
 
-       (*cache_p) = armv4_5_build_reg_cache(target, armv4_5);
-       armv4_5->core_cache = (*cache_p);
+       (*cache_p) = arm_build_reg_cache(target, armv4_5);
 }
 
 int arm9tdmi_init_target(struct command_context *cmd_ctx,
@@ -831,15 +829,21 @@ static int arm9tdmi_target_create(struct target *target, Jim_Interp *interp)
 
 COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
 {
-       struct target *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(CMD_CTX);
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
        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) {
-               command_print(cmd_ctx, "target doesn't have EmbeddedICE "
+               command_print(CMD_CTX, "target doesn't have EmbeddedICE "
                                "with vector_catch");
                return ERROR_TARGET_INVALID;
        }
@@ -856,11 +860,11 @@ COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
        if (CMD_ARGC > 0)
        {
                vector_catch_value = 0x0;
-               if (strcmp(args[0], "all") == 0)
+               if (strcmp(CMD_ARGV[0], "all") == 0)
                {
                        vector_catch_value = 0xdf;
                }
-               else if (strcmp(args[0], "none") == 0)
+               else if (strcmp(CMD_ARGV[0], "none") == 0)
                {
                        /* do nothing */
                }
@@ -872,7 +876,7 @@ COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
                                unsigned j;
                                for (j = 0; arm9tdmi_vectors[j].name; j++)
                                {
-                                       if (strcmp(args[i], arm9tdmi_vectors[j].name) == 0)
+                                       if (strcmp(CMD_ARGV[i], arm9tdmi_vectors[j].name) == 0)
                                        {
                                                vector_catch_value |= arm9tdmi_vectors[j].value;
                                                break;
@@ -882,7 +886,7 @@ COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
                                /* complain if vector wasn't found */
                                if (!arm9tdmi_vectors[j].name)
                                {
-                                       command_print(cmd_ctx, "vector '%s' not found, leaving current setting unchanged", args[i]);
+                                       command_print(CMD_CTX, "vector '%s' not found, leaving current setting unchanged", CMD_ARGV[i]);
 
                                        /* reread current setting */
                                        vector_catch_value = buf_get_u32(
@@ -901,7 +905,7 @@ COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
 
        /* output current settings */
        for (unsigned i = 0; arm9tdmi_vectors[i].name; i++) {
-               command_print(cmd_ctx, "%s: %s", arm9tdmi_vectors[i].name,
+               command_print(CMD_CTX, "%s: %s", arm9tdmi_vectors[i].name,
                        (vector_catch_value & arm9tdmi_vectors[i].value)
                                ? "catch" : "don't catch");
        }
@@ -909,21 +913,29 @@ COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
        return ERROR_OK;
 }
 
-int arm9tdmi_register_commands(struct command_context *cmd_ctx)
-{
-       int retval;
-       struct command *arm9tdmi_cmd;
-
-       retval = arm7_9_register_commands(cmd_ctx);
-       arm9tdmi_cmd = register_command(cmd_ctx, NULL, "arm9",
-                       NULL, COMMAND_ANY,
-                       "arm9 specific commands");
-       register_command(cmd_ctx, arm9tdmi_cmd, "vector_catch",
-                       handle_arm9tdmi_catch_vectors_command, COMMAND_EXEC,
-                       "arm9 vector_catch [all|none|reset|undef|swi|pabt|dabt|irq|fiq] ...");
-
-       return retval;
-}
+static const struct command_registration arm9tdmi_exec_command_handlers[] = {
+       {
+               .name = "vector_catch",
+               .handler = handle_arm9tdmi_catch_vectors_command,
+               .mode = COMMAND_EXEC,
+               .help = "Display, after optionally updating, configuration "
+                       "of vector catch unit.",
+               .usage = "[all|none|(reset|undef|swi|pabt|dabt|irq|fiq)*]",
+       },
+       COMMAND_REGISTRATION_DONE
+};
+const struct command_registration arm9tdmi_command_handlers[] = {
+       {
+               .chain = arm7_9_command_handlers,
+       },
+       {
+               .name = "arm9tdmi",
+               .mode = COMMAND_ANY,
+               .help = "arm9tdmi command group",
+               .chain = arm9tdmi_exec_command_handlers,
+       },
+       COMMAND_REGISTRATION_DONE
+};
 
 /** Holds methods for ARM9TDMI targets. */
 struct target_type arm9tdmi_target =
@@ -931,7 +943,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,
 
@@ -943,7 +955,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,
@@ -959,7 +971,7 @@ struct target_type arm9tdmi_target =
        .add_watchpoint = arm7_9_add_watchpoint,
        .remove_watchpoint = arm7_9_remove_watchpoint,
 
-       .register_commands = arm9tdmi_register_commands,
+       .commands = arm9tdmi_command_handlers,
        .target_create = arm9tdmi_target_create,
        .init_target = arm9tdmi_init_target,
        .examine = arm7_9_examine,