From a585bdf7269ce5c861c83ee3294ba1f074e9c877 Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Tue, 10 Nov 2009 22:29:36 -0800 Subject: [PATCH] add CMD_NAME macro for command handlers By introducing the CMD_NAME macro, this parameter may be integrated as args[-1] in command.[ch], without touching any other call sites. --- src/flash/flash.c | 2 +- src/helper/command.h | 6 ++++++ src/jtag/tcl.c | 2 +- src/target/arm720t.c | 2 +- src/target/arm920t.c | 4 ++-- src/target/arm926ejs.c | 2 +- src/target/arm966e.c | 2 +- src/target/cortex_m3.c | 2 +- src/target/target.c | 6 +++--- src/target/xscale.c | 14 +++++++------- 10 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/flash/flash.c b/src/flash/flash.c index da43e1a81..f3f0086ad 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -728,7 +728,7 @@ COMMAND_HANDLER(handle_flash_fill_command) if (count == 0) return ERROR_OK; - switch (cmd[4]) + switch (CMD_NAME[4]) { case 'w': wordsize = 4; diff --git a/src/helper/command.h b/src/helper/command.h index aec066d08..74c6f367b 100644 --- a/src/helper/command.h +++ b/src/helper/command.h @@ -121,6 +121,12 @@ typedef struct command_context_s */ #define COMMAND_HELPER(name, extra...) __COMMAND_HANDLER(name, extra) +/** + * Use this macro to access the name of the command being handled, + * rather than accessing the variable directly. It may be moved. + */ +#define CMD_NAME cmd + /// The type signature for commands' handler functions. typedef __COMMAND_HANDLER((*command_handler_t)); diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index 4da8838d3..923542f8e 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -605,7 +605,7 @@ static int default_srst_asserted(int *srst_asserted) COMMAND_HANDLER(handle_interface_list_command) { - if (strcmp(cmd, "interface_list") == 0 && argc > 0) + if (strcmp(CMD_NAME, "interface_list") == 0 && argc > 0) return ERROR_COMMAND_SYNTAX_ERROR; command_print(cmd_ctx, "The following JTAG interfaces are available:"); diff --git a/src/target/arm720t.c b/src/target/arm720t.c index 6a5a4e747..af326bf41 100644 --- a/src/target/arm720t.c +++ b/src/target/arm720t.c @@ -424,7 +424,7 @@ COMMAND_HANDLER(arm720t_handle_cp15_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } diff --git a/src/target/arm920t.c b/src/target/arm920t.c index 5576f60f0..81f5c6af9 100644 --- a/src/target/arm920t.c +++ b/src/target/arm920t.c @@ -1203,7 +1203,7 @@ COMMAND_HANDLER(arm920t_handle_cp15_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } @@ -1257,7 +1257,7 @@ COMMAND_HANDLER(arm920t_handle_cp15i_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } diff --git a/src/target/arm926ejs.c b/src/target/arm926ejs.c index 6f347d87d..77405a870 100644 --- a/src/target/arm926ejs.c +++ b/src/target/arm926ejs.c @@ -740,7 +740,7 @@ COMMAND_HANDLER(arm926ejs_handle_cp15_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } diff --git a/src/target/arm966e.c b/src/target/arm966e.c index e61943a3e..62ccaa80f 100644 --- a/src/target/arm966e.c +++ b/src/target/arm966e.c @@ -174,7 +174,7 @@ COMMAND_HANDLER(arm966e_handle_cp15_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } diff --git a/src/target/cortex_m3.c b/src/target/cortex_m3.c index 50842319a..86469c4ef 100644 --- a/src/target/cortex_m3.c +++ b/src/target/cortex_m3.c @@ -1902,7 +1902,7 @@ COMMAND_HANDLER(handle_cortex_m3_mask_interrupts_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } diff --git a/src/target/target.c b/src/target/target.c index 21c0526f5..8cc46ecd6 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -2046,7 +2046,7 @@ COMMAND_HANDLER(handle_wait_halt_command) int retval = parse_uint(args[0], &ms); if (ERROR_OK != retval) { - command_print(cmd_ctx, "usage: %s [seconds]", cmd); + command_print(cmd_ctx, "usage: %s [seconds]", CMD_NAME); return ERROR_COMMAND_SYNTAX_ERROR; } // convert seconds (given) to milliseconds (needed) @@ -2256,7 +2256,7 @@ COMMAND_HANDLER(handle_md_command) return ERROR_COMMAND_SYNTAX_ERROR; unsigned size = 0; - switch (cmd[2]) { + switch (CMD_NAME[2]) { case 'w': size = 4; break; case 'h': size = 2; break; case 'b': size = 1; break; @@ -2333,7 +2333,7 @@ COMMAND_HANDLER(handle_mw_command) target_t *target = get_current_target(cmd_ctx); unsigned wordsize; uint8_t value_buf[4]; - switch (cmd[2]) + switch (CMD_NAME[2]) { case 'w': wordsize = 4; diff --git a/src/target/xscale.c b/src/target/xscale.c index 6f2d6ee3d..e18d5916a 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -3127,7 +3127,7 @@ COMMAND_HANDLER(xscale_handle_mmu_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } @@ -3163,13 +3163,13 @@ COMMAND_HANDLER(xscale_handle_idcache_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } - if (strcmp(cmd, "icache") == 0) + if (strcmp(CMD_NAME, "icache") == 0) icache = 1; - else if (strcmp(cmd, "dcache") == 0) + else if (strcmp(CMD_NAME, "dcache") == 0) dcache = 1; if (argc >= 1) @@ -3302,7 +3302,7 @@ COMMAND_HANDLER(xscale_handle_trace_buffer_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } @@ -3429,7 +3429,7 @@ COMMAND_HANDLER(xscale_handle_dump_trace_command) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } @@ -3499,7 +3499,7 @@ COMMAND_HANDLER(xscale_handle_cp15) if (target->state != TARGET_HALTED) { - command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); + command_print(cmd_ctx, "target must be stopped for \"%s\" command", CMD_NAME); return ERROR_OK; } uint32_t reg_no = 0;