uint32_t sample_count = 0;
/* hopefully it is safe to cache! We want to stop/restart as quickly as possible. */
- struct reg *reg = register_get_by_name(target->reg_cache, "pc", 1);
+ struct reg *reg = register_get_by_name(target->reg_cache, "pc", true);
int retval = ERROR_OK;
for (;;) {
COMMAND_HANDLER(handle_reg_command)
{
- struct target *target;
- struct reg *reg = NULL;
- unsigned count = 0;
- char *value;
-
LOG_DEBUG("-");
- target = get_current_target(CMD_CTX);
+ struct target *target = get_current_target(CMD_CTX);
+ struct reg *reg = NULL;
/* list all available registers for the current target */
if (CMD_ARGC == 0) {
struct reg_cache *cache = target->reg_cache;
- count = 0;
+ unsigned int count = 0;
while (cache) {
unsigned i;
continue;
/* only print cached values if they are valid */
if (reg->valid) {
- value = buf_to_hex_str(reg->value,
+ char *value = buf_to_hex_str(reg->value,
reg->size);
command_print(CMD,
"(%i) %s (/%" PRIu32 "): 0x%s%s",
COMMAND_PARSE_NUMBER(uint, CMD_ARGV[0], num);
struct reg_cache *cache = target->reg_cache;
- count = 0;
+ unsigned int count = 0;
while (cache) {
unsigned i;
for (i = 0; i < cache->num_regs; i++) {
}
} else {
/* access a single register by its name */
- reg = register_get_by_name(target->reg_cache, CMD_ARGV[0], 1);
+ reg = register_get_by_name(target->reg_cache, CMD_ARGV[0], true);
if (!reg)
goto not_found;
if ((CMD_ARGC == 2) && (strcmp(CMD_ARGV[1], "force") == 0))
reg->valid = 0;
- if (reg->valid == 0)
- reg->type->get(reg);
- value = buf_to_hex_str(reg->value, reg->size);
+ if (reg->valid == 0) {
+ int retval = reg->type->get(reg);
+ if (retval != ERROR_OK) {
+ LOG_ERROR("Could not read register '%s'", reg->name);
+ return retval;
+ }
+ }
+ char *value = buf_to_hex_str(reg->value, reg->size);
command_print(CMD, "%s (/%i): 0x%s", reg->name, (int)(reg->size), value);
free(value);
return ERROR_OK;
return ERROR_FAIL;
str_to_buf(CMD_ARGV[1], strlen(CMD_ARGV[1]), buf, reg->size, 0);
- reg->type->set(reg, buf);
-
- value = buf_to_hex_str(reg->value, reg->size);
- command_print(CMD, "%s (/%i): 0x%s", reg->name, (int)(reg->size), value);
- free(value);
+ int retval = reg->type->set(reg, buf);
+ if (retval != ERROR_OK) {
+ LOG_ERROR("Could not write to register '%s'", reg->name);
+ } else {
+ char *value = buf_to_hex_str(reg->value, reg->size);
+ command_print(CMD, "%s (/%i): 0x%s", reg->name, (int)(reg->size), value);
+ free(value);
+ }
free(buf);
- return ERROR_OK;
+ return retval;
}
return ERROR_COMMAND_SYNTAX_ERROR;
static int target_mem2array(Jim_Interp *interp, struct target *target, int argc, Jim_Obj *const *argv)
{
long l;
+ jim_wide wide_addr;
uint32_t width;
int len;
- uint32_t addr;
+ target_addr_t addr;
uint32_t count;
uint32_t v;
const char *varname;
if (e != JIM_OK)
return e;
- e = Jim_GetLong(interp, argv[2], &l);
- addr = l;
+ e = Jim_GetWide(interp, argv[2], &wide_addr);
+ addr = (target_addr_t)wide_addr;
if (e != JIM_OK)
return e;
e = Jim_GetLong(interp, argv[3], &l);
} else {
char buf[100];
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- sprintf(buf, "mem2array address: 0x%08" PRIx32 " is not aligned for %" PRIu32 " byte reads",
+ sprintf(buf, "mem2array address: " TARGET_ADDR_FMT " is not aligned for %" PRIu32 " byte reads",
addr,
width);
Jim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);
retval = target_read_memory(target, addr, width, count, buffer);
if (retval != ERROR_OK) {
/* BOO !*/
- LOG_ERROR("mem2array: Read @ 0x%08" PRIx32 ", w=%" PRIu32 ", cnt=%" PRIu32 ", failed",
+ LOG_ERROR("mem2array: Read @ " TARGET_ADDR_FMT ", w=%" PRIu32 ", cnt=%" PRIu32 ", failed",
addr,
width,
count);
int argc, Jim_Obj *const *argv)
{
long l;
+ jim_wide wide_addr;
uint32_t width;
int len;
- uint32_t addr;
+ target_addr_t addr;
uint32_t count;
uint32_t v;
const char *varname;
if (e != JIM_OK)
return e;
- e = Jim_GetLong(interp, argv[2], &l);
- addr = l;
+ e = Jim_GetWide(interp, argv[2], &wide_addr);
+ addr = (target_addr_t)wide_addr;
if (e != JIM_OK)
return e;
e = Jim_GetLong(interp, argv[3], &l);
} else {
char buf[100];
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- sprintf(buf, "array2mem address: 0x%08" PRIx32 " is not aligned for %" PRIu32 " byte reads",
+ sprintf(buf, "array2mem address: " TARGET_ADDR_FMT " is not aligned for %" PRIu32 " byte reads",
addr,
width);
Jim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);
retval = target_write_memory(target, addr, width, count, buffer);
if (retval != ERROR_OK) {
/* BOO !*/
- LOG_ERROR("array2mem: Write @ 0x%08" PRIx32 ", w=%" PRIu32 ", cnt=%" PRIu32 ", failed",
+ LOG_ERROR("array2mem: Write @ " TARGET_ADDR_FMT ", w=%" PRIu32 ", cnt=%" PRIu32 ", failed",
addr,
width,
count);
if (goi->argc != 0)
goto no_params;
}
- Jim_SetResultString(goi->interp, target->gdb_port_override ? : "undefined", -1);
+ Jim_SetResultString(goi->interp, target->gdb_port_override ? target->gdb_port_override : "undefined", -1);
/* loop for more */
break;