From ab77c5d7921f779d77c72212937aa8544dbfc1b4 Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Thu, 25 May 2017 13:12:21 -0700 Subject: Invalidate the register cache when rtos_hartid==-1 This means I don't know what hart to look at, so I might as well invalidate the register cache. Without this, you might get stale registers the first time you ask for them. --- src/target/riscv/riscv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c index f89df6e..c232204 100644 --- a/src/target/riscv/riscv.c +++ b/src/target/riscv/riscv.c @@ -1017,7 +1017,10 @@ void riscv_set_current_hartid(struct target *target, int hartid) return; /* Avoid invalidating the register cache all the time. */ - if (r->registers_initialized && (!riscv_rtos_enabled(target) || (previous_hartid == hartid)) && target->reg_cache->reg_list[GDB_REGNO_XPR0].size == (long)riscv_xlen(target)) { + if (r->registers_initialized + && (!riscv_rtos_enabled(target) || (previous_hartid == hartid)) + && target->reg_cache->reg_list[GDB_REGNO_XPR0].size == (long)riscv_xlen(target) + && (!riscv_rtos_enabled(target) || (r->rtos_hartid != -1))) { LOG_DEBUG("registers already initialized, skipping"); return; } else -- cgit v1.1