aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPalmer Dabbelt <palmer@dabbelt.com>2018-05-30 02:22:59 -0700
committerPalmer Dabbelt <palmer@dabbelt.com>2018-05-30 02:22:59 -0700
commit47731c68d22fe67a9ed5581b50ea1af2c2e7f971 (patch)
treef27b9a0c71b411eb5f77b7b8bac23c7a9d747b4d
parentab5dbc6168082f1a76f6986cda145d656973036b (diff)
downloadriscv-openocd-47731c68d22fe67a9ed5581b50ea1af2c2e7f971.zip
riscv-openocd-47731c68d22fe67a9ed5581b50ea1af2c2e7f971.tar.gz
riscv-openocd-47731c68d22fe67a9ed5581b50ea1af2c2e7f971.tar.bz2
If we don't know which thread should be halted then just don't set one
-rw-r--r--src/target/riscv/riscv.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c
index a271764..0de8f5c 100644
--- a/src/target/riscv/riscv.c
+++ b/src/target/riscv/riscv.c
@@ -1121,9 +1121,12 @@ int riscv_openocd_halt(struct target *target)
register_cache_invalidate(target->reg_cache);
if (riscv_rtos_enabled(target)) {
- LOG_DEBUG(" current RTOS hartid is %d", r->rtos_hartid);
- target->rtos->current_threadid = r->rtos_hartid + 1;
- target->rtos->current_thread = r->rtos_hartid + 1;
+ if (r->rtos_hartid == -1) {
+ LOG_DEBUG("halt requested on RTOS hartid %d", r->rtos_hartid);
+ target->rtos->current_threadid = r->rtos_hartid + 1;
+ target->rtos->current_thread = r->rtos_hartid + 1;
+ } else
+ LOG_DEBUG("halt requested, but no known RTOS hartid");
}
target->state = TARGET_HALTED;