When a guest specificies the the rounding mode should be dynamic 0b111 then we want to re-caclulate the rounding mode on each instruction. The gen_helper_set_rounding_mode() function will correctly check the rounding mode and handle a dynamic rounding, we just need to make sure it's always called if dynamic rounding is selected.
Fixes: 1885350 ("RISCV dynamic rounding mode is not behaving correctly") Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> --- target/riscv/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index ce71ca7a92..a39eba679a 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -490,7 +490,7 @@ static void gen_set_rm(DisasContext *ctx, int rm) { TCGv_i32 t0; - if (ctx->frm == rm) { + if (ctx->frm == rm && rm != 7) { return; } ctx->frm = rm; -- 2.27.0