From 7fffc5208c4d5e1bc0f7f0a5efdbacbd1f9d6cb2 Mon Sep 17 00:00:00 2001 From: ShihPo Hung Date: Sat, 21 Mar 2020 12:22:44 -0400 Subject: [PATCH] target/riscv: update mstatus.SD when FS is set dirty remove the check becuase SD bit should summarize FS and XS fields unconditionally. Backports commit 82f014671cf057de51c4a577c9e2ad637dcec6f9 from qemu --- qemu/target/riscv/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/target/riscv/translate.c b/qemu/target/riscv/translate.c index df9eae4f..0460d8f7 100644 --- a/qemu/target/riscv/translate.c +++ b/qemu/target/riscv/translate.c @@ -416,7 +416,7 @@ static void mark_fs_dirty(DisasContext *ctx) tmp = tcg_temp_new(tcg_ctx); tcg_gen_ld_tl(tcg_ctx, tmp, tcg_ctx->cpu_env, offsetof(CPURISCVState, mstatus)); - tcg_gen_ori_tl(tcg_ctx, tmp, tmp, MSTATUS_FS); + tcg_gen_ori_tl(tcg_ctx, tmp, tmp, MSTATUS_FS | MSTATUS_SD); tcg_gen_st_tl(tcg_ctx, tmp, tcg_ctx->cpu_env, offsetof(CPURISCVState, mstatus)); tcg_temp_free(tcg_ctx, tmp); }