aboutsummaryrefslogtreecommitdiff
path: root/src/target/target.c
diff options
context:
space:
mode:
authorMegan Wachs <megan@sifive.com>2017-02-05 21:06:43 -0800
committerMegan Wachs <megan@sifive.com>2017-02-05 21:06:43 -0800
commit2ae0078fc723d18822ed50f6f3accd32107acbef (patch)
treea567bbb3757320da0ac65c1851dc376e3785f84f /src/target/target.c
parent9bab0782d313679bb0bfb634e6e87c757b8d5503 (diff)
downloadriscv-openocd-2ae0078fc723d18822ed50f6f3accd32107acbef.zip
riscv-openocd-2ae0078fc723d18822ed50f6f3accd32107acbef.tar.gz
riscv-openocd-2ae0078fc723d18822ed50f6f3accd32107acbef.tar.bz2
Use the set/reg register error return code when registers don't exist.
Diffstat (limited to 'src/target/target.c')
-rw-r--r--src/target/target.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/target/target.c b/src/target/target.c
index 82ba349..a8be18e 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -2614,6 +2614,7 @@ COMMAND_HANDLER(handle_reg_command)
struct reg *reg = NULL;
unsigned count = 0;
char *value;
+ int retval;
LOG_DEBUG("-");
@@ -2699,8 +2700,13 @@ COMMAND_HANDLER(handle_reg_command)
if ((CMD_ARGC == 2) && (strcmp(CMD_ARGV[1], "force") == 0))
reg->valid = 0;
- if (reg->valid == 0)
- reg->type->get(reg);
+ if (reg->valid == 0) {
+ retval = reg->type->get(reg);
+ if (retval != ERROR_OK) {
+ LOG_DEBUG("Couldn't get register.");
+ return retval;
+ }
+ }
value = buf_to_str(reg->value, reg->size, 16);
command_print(CMD_CTX, "%s (/%i): 0x%s", reg->name, (int)(reg->size), value);
free(value);
@@ -2714,7 +2720,12 @@ COMMAND_HANDLER(handle_reg_command)
return ERROR_FAIL;
str_to_buf(CMD_ARGV[1], strlen(CMD_ARGV[1]), buf, reg->size, 0);
- reg->type->set(reg, buf);
+ retval = reg->type->set(reg, buf);
+ if (retval != ERROR_OK) {
+ LOG_DEBUG("Couldn't set register.");
+ free (buf);
+ return retval;
+ }
value = buf_to_str(reg->value, reg->size, 16);
command_print(CMD_CTX, "%s (/%i): 0x%s", reg->name, (int)(reg->size), value);