aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2018-01-19 13:58:02 -0800
committerTim Newsome <tim@sifive.com>2018-01-19 13:58:02 -0800
commit3839cbf0ad49763e657a2662b757b1dfceaf00df (patch)
tree3c50dfe34e68d23d6f44a4b33d9f7535d6e7d282
parentcb543e804d88ae2421292bc2d85185e9dc7cc5b5 (diff)
downloadriscv-openocd-3839cbf0ad49763e657a2662b757b1dfceaf00df.zip
riscv-openocd-3839cbf0ad49763e657a2662b757b1dfceaf00df.tar.gz
riscv-openocd-3839cbf0ad49763e657a2662b757b1dfceaf00df.tar.bz2
Add some error checking to examine().
Fixes #183. Change-Id: I6fb45adf4c97ea339c9d4ca3b372a09b18e3b56e
-rw-r--r--src/target/riscv/riscv-013.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/target/riscv/riscv-013.c b/src/target/riscv/riscv-013.c
index d3d9f50..8bef588 100644
--- a/src/target/riscv/riscv-013.c
+++ b/src/target/riscv/riscv-013.c
@@ -1212,8 +1212,12 @@ static int examine(struct target *target)
break;
r->hart_count = i + 1;
- if (!riscv_is_halted(target))
- riscv013_halt_current_hart(target);
+ if (!riscv_is_halted(target)) {
+ if (riscv013_halt_current_hart(target) != ERROR_OK) {
+ LOG_ERROR("Fatal: Hart %d failed to halt during examine()", i);
+ return ERROR_FAIL;
+ }
+ }
/* Without knowing anything else we can at least mess with the
* program buffer. */
@@ -1225,7 +1229,10 @@ static int examine(struct target *target)
else
r->xlen[i] = 32;
- register_read_direct(target, &r->misa, GDB_REGNO_MISA);
+ if (register_read_direct(target, &r->misa, GDB_REGNO_MISA)) {
+ LOG_ERROR("Fatal: Failed to read MISA from hart %d.", i);
+ return ERROR_FAIL;
+ }
/* Now init registers based on what we discovered. */
if (riscv_init_registers(target) != ERROR_OK)