use COMMAND_REGISTER macro
[fw/openocd] / src / target / target.c
index bf83da0077cbbd35f59b86f4b4936f499db5f2a7..2e933820caa7f74dc2f9c4d008df2a58f53cbd1e 100644 (file)
@@ -1860,7 +1860,7 @@ COMMAND_HANDLER(handle_reg_command)
 {
        struct target *target;
        struct reg *reg = NULL;
-       int count = 0;
+       unsigned count = 0;
        char *value;
 
        LOG_DEBUG("-");
@@ -1875,7 +1875,7 @@ COMMAND_HANDLER(handle_reg_command)
                count = 0;
                while (cache)
                {
-                       int i;
+                       unsigned i;
 
                        command_print(CMD_CTX, "===== %s", cache->name);
 
@@ -1917,10 +1917,10 @@ COMMAND_HANDLER(handle_reg_command)
                count = 0;
                while (cache)
                {
-                       int i;
+                       unsigned i;
                        for (i = 0; i < cache->num_regs; i++)
                        {
-                               if (count++ == (int)num)
+                               if (count++ == num)
                                {
                                        reg = &cache->reg_list[i];
                                        break;
@@ -2003,23 +2003,14 @@ COMMAND_HANDLER(handle_poll_command)
                        return retval;
                if ((retval = target_arch_state(target)) != ERROR_OK)
                        return retval;
-
        }
        else if (CMD_ARGC == 1)
        {
-               if (strcmp(CMD_ARGV[0], "on") == 0)
-               {
-                       jtag_poll_set_enabled(true);
-               }
-               else if (strcmp(CMD_ARGV[0], "off") == 0)
-               {
-                       jtag_poll_set_enabled(false);
-               }
-               else
-               {
-                       command_print(CMD_CTX, "arg is \"on\" or \"off\"");
-               }
-       } else
+               bool enable;
+               COMMAND_PARSE_ON_OFF(CMD_ARGV[0], enable);
+               jtag_poll_set_enabled(enable);
+       }
+       else
        {
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
@@ -2248,8 +2239,7 @@ COMMAND_HANDLER(handle_md_command)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        unsigned size = 0;
-       const char *cmd_name = CMD_NAME;
-       switch (cmd_name[6]) {
+       switch (CMD_NAME[2]) {
        case 'w': size = 4; break;
        case 'h': size = 2; break;
        case 'b': size = 1; break;
@@ -2301,7 +2291,6 @@ COMMAND_HANDLER(handle_mw_command)
        bool physical=strcmp(CMD_ARGV[0], "phys")==0;
        int (*fn)(struct target *target,
                        uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
-       const char *cmd_name = CMD_NAME;
        if (physical)
        {
                CMD_ARGC--;
@@ -2327,7 +2316,7 @@ COMMAND_HANDLER(handle_mw_command)
        struct target *target = get_current_target(CMD_CTX);
        unsigned wordsize;
        uint8_t value_buf[4];
-       switch (cmd_name[6])
+       switch (CMD_NAME[2])
        {
                case 'w':
                        wordsize = 4;
@@ -3156,7 +3145,6 @@ static int target_mem2array(Jim_Interp *interp, struct target *target, int argc,
        uint32_t count;
        uint32_t v;
        const char *varname;
-       uint8_t buffer[4096];
        int  n, e, retval;
        uint32_t i;
 
@@ -3238,14 +3226,20 @@ static int target_mem2array(Jim_Interp *interp, struct target *target, int argc,
 
        /* index counter */
        n = 0;
+
+       size_t buffersize = 4096;
+       uint8_t *buffer = malloc(buffersize);
+       if (buffer == NULL)
+               return JIM_ERR;
+
        /* assume ok */
        e = JIM_OK;
        while (len) {
                /* Slurp... in buffer size chunks */
 
                count = len; /* in objects.. */
-               if (count > (sizeof(buffer)/width)) {
-                       count = (sizeof(buffer)/width);
+               if (count > (buffersize/width)) {
+                       count = (buffersize/width);
                }
 
                retval = target_read_memory(target, addr, width, count, buffer);
@@ -3279,6 +3273,8 @@ static int target_mem2array(Jim_Interp *interp, struct target *target, int argc,
                }
        }
 
+       free(buffer);
+
        Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
 
        return JIM_OK;
@@ -3342,7 +3338,6 @@ static int target_array2mem(Jim_Interp *interp, struct target *target, int argc,
        uint32_t count;
        uint32_t v;
        const char *varname;
-       uint8_t buffer[4096];
        int  n, e, retval;
        uint32_t i;
 
@@ -3426,12 +3421,18 @@ static int target_array2mem(Jim_Interp *interp, struct target *target, int argc,
        n = 0;
        /* assume ok */
        e = JIM_OK;
+
+       size_t buffersize = 4096;
+       uint8_t *buffer = malloc(buffersize);
+       if (buffer == NULL)
+               return JIM_ERR;
+
        while (len) {
                /* Slurp... in buffer size chunks */
 
                count = len; /* in objects.. */
-               if (count > (sizeof(buffer)/width)) {
-                       count = (sizeof(buffer)/width);
+               if (count > (buffersize/width)) {
+                       count = (buffersize/width);
                }
 
                v = 0; /* shut up gcc */
@@ -3465,6 +3466,8 @@ static int target_array2mem(Jim_Interp *interp, struct target *target, int argc,
                }
        }
 
+       free(buffer);
+
        Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
 
        return JIM_OK;
@@ -4762,7 +4765,7 @@ static int jim_mcrmrc(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
 int target_register_commands(struct command_context *cmd_ctx)
 {
 
-       register_command(cmd_ctx, NULL, "targets",
+       COMMAND_REGISTER(cmd_ctx, NULL, "targets",
                        handle_targets_command, COMMAND_EXEC,
                        "change current command line target (one parameter) "
                        "or list targets (no parameters)");
@@ -4781,7 +4784,7 @@ int target_register_user_commands(struct command_context *cmd_ctx)
        if ((retval = trace_register_commands(cmd_ctx)) != ERROR_OK)
                return retval;
 
-       register_command(cmd_ctx, NULL, "profile",
+       COMMAND_REGISTER(cmd_ctx, NULL, "profile",
                        handle_profile_command, COMMAND_EXEC,
                        "profiling samples the CPU PC");
 
@@ -4793,94 +4796,94 @@ int target_register_user_commands(struct command_context *cmd_ctx)
                        "convert a TCL array to memory locations and write the values "
                        "<ARRAYNAME> <WIDTH = 32/16/8> <ADDRESS> <COUNT>");
 
-       register_command(cmd_ctx, NULL, "fast_load_image",
+       COMMAND_REGISTER(cmd_ctx, NULL, "fast_load_image",
                        handle_fast_load_image_command, COMMAND_ANY,
                        "same CMD_ARGV as load_image, image stored in memory "
                        "- mainly for profiling purposes");
 
-       register_command(cmd_ctx, NULL, "fast_load",
+       COMMAND_REGISTER(cmd_ctx, NULL, "fast_load",
                        handle_fast_load_command, COMMAND_ANY,
                        "loads active fast load image to current target "
                        "- mainly for profiling purposes");
 
        /** @todo don't register virt2phys() unless target supports it */
-       register_command(cmd_ctx, NULL, "virt2phys",
+       COMMAND_REGISTER(cmd_ctx, NULL, "virt2phys",
                        handle_virt2phys_command, COMMAND_ANY,
                        "translate a virtual address into a physical address");
 
-       register_command(cmd_ctx,  NULL, "reg",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "reg",
                        handle_reg_command, COMMAND_EXEC,
                        "display or set a register");
 
-       register_command(cmd_ctx,  NULL, "poll",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "poll",
                        handle_poll_command, COMMAND_EXEC,
                        "poll target state");
-       register_command(cmd_ctx,  NULL, "wait_halt",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "wait_halt",
                        handle_wait_halt_command, COMMAND_EXEC,
                        "wait for target halt [time (s)]");
-       register_command(cmd_ctx,  NULL, "halt",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "halt",
                        handle_halt_command, COMMAND_EXEC,
                        "halt target");
-       register_command(cmd_ctx,  NULL, "resume",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "resume",
                        handle_resume_command, COMMAND_EXEC,
                        "resume target [addr]");
-       register_command(cmd_ctx,  NULL, "reset",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "reset",
                        handle_reset_command, COMMAND_EXEC,
                        "reset target [run | halt | init] - default is run");
-       register_command(cmd_ctx,  NULL, "soft_reset_halt",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "soft_reset_halt",
                        handle_soft_reset_halt_command, COMMAND_EXEC,
                        "halt the target and do a soft reset");
 
-       register_command(cmd_ctx,  NULL, "step",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "step",
                        handle_step_command, COMMAND_EXEC,
                        "step one instruction from current PC or [addr]");
 
-       register_command(cmd_ctx,  NULL, "mdw",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "mdw",
                        handle_md_command, COMMAND_EXEC,
                        "display memory words [phys] <addr> [count]");
-       register_command(cmd_ctx,  NULL, "mdh",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "mdh",
                        handle_md_command, COMMAND_EXEC,
                        "display memory half-words [phys] <addr> [count]");
-       register_command(cmd_ctx,  NULL, "mdb",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "mdb",
                        handle_md_command, COMMAND_EXEC,
                        "display memory bytes [phys] <addr> [count]");
 
-       register_command(cmd_ctx,  NULL, "mww",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "mww",
                        handle_mw_command, COMMAND_EXEC,
                        "write memory word [phys]  <addr> <value> [count]");
-       register_command(cmd_ctx,  NULL, "mwh",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "mwh",
                        handle_mw_command, COMMAND_EXEC,
                        "write memory half-word [phys]  <addr> <value> [count]");
-       register_command(cmd_ctx,  NULL, "mwb",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "mwb",
                        handle_mw_command, COMMAND_EXEC,
                        "write memory byte [phys] <addr> <value> [count]");
 
-       register_command(cmd_ctx,  NULL, "bp",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "bp",
                        handle_bp_command, COMMAND_EXEC,
                        "list or set breakpoint [<address> <length> [hw]]");
-       register_command(cmd_ctx,  NULL, "rbp",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "rbp",
                        handle_rbp_command, COMMAND_EXEC,
                        "remove breakpoint <address>");
 
-       register_command(cmd_ctx,  NULL, "wp",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "wp",
                        handle_wp_command, COMMAND_EXEC,
                        "list or set watchpoint "
                                "[<address> <length> <r/w/a> [value] [mask]]");
-       register_command(cmd_ctx,  NULL, "rwp",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "rwp",
                        handle_rwp_command, COMMAND_EXEC,
                        "remove watchpoint <address>");
 
-       register_command(cmd_ctx,  NULL, "load_image",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "load_image",
                        handle_load_image_command, COMMAND_EXEC,
                        "load_image <file> <address> "
                        "['bin'|'ihex'|'elf'|'s19'] [min_address] [max_length]");
-       register_command(cmd_ctx,  NULL, "dump_image",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "dump_image",
                        handle_dump_image_command, COMMAND_EXEC,
                        "dump_image <file> <address> <size>");
-       register_command(cmd_ctx,  NULL, "verify_image",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "verify_image",
                        handle_verify_image_command, COMMAND_EXEC,
                        "verify_image <file> [offset] [type]");
-       register_command(cmd_ctx,  NULL, "test_image",
+       COMMAND_REGISTER(cmd_ctx,  NULL, "test_image",
                        handle_test_image_command, COMMAND_EXEC,
                        "test_image <file> [offset] [type]");