{
struct target *target;
struct reg *reg = NULL;
- int count = 0;
+ unsigned count = 0;
char *value;
LOG_DEBUG("-");
count = 0;
while (cache)
{
- int i;
+ unsigned i;
command_print(CMD_CTX, "===== %s", cache->name);
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;
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;
}
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;
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--;
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;
uint32_t count;
uint32_t v;
const char *varname;
- uint8_t buffer[4096];
int n, e, retval;
uint32_t i;
/* 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);
}
}
+ free(buffer);
+
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
return JIM_OK;
uint32_t count;
uint32_t v;
const char *varname;
- uint8_t buffer[4096];
int n, e, retval;
uint32_t i;
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 */
}
}
+ free(buffer);
+
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
return JIM_OK;
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)");
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");
"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]");