Fixed 32bit JALR ra,ra,imm integer instruction, where RD was written before using it to calculate target PC. --- sim/riscv/sim-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sim/riscv/sim-main.c b/sim/riscv/sim-main.c index 2b184aea554..3cf6e3fc4b0 100644 --- a/sim/riscv/sim-main.c +++ b/sim/riscv/sim-main.c @@ -598,8 +598,8 @@ execute_i (SIM_CPU *cpu, unsigned_word iw, const struct riscv_opcode *op) break; case MATCH_JALR: TRACE_INSN (cpu, "jalr %s, %s, %" PRIiTW ";", rd_name, rs1_name, i_imm); - store_rd (cpu, rd, riscv_cpu->pc + 4); pc = riscv_cpu->regs[rs1] + i_imm; + store_rd (cpu, rd, riscv_cpu->pc + 4); TRACE_BRANCH (cpu, "to %#" PRIxTW, pc); break; -- 2.25.1