From 9d5a626b2c3fa98761b35b5e2ac86f7adb231002 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 28 Jun 2014 10:25:36 -0700 Subject: target-alpha: Forget installed round mode after MT_FPCR When we use QUAL_RM_D, we copy fpcr_dyn_round to float_status. When we install a new FPCR value, we update fpcr_dyn_round. Reset the status of the cache so that we re-copy for the next fp insn that requires dynamic rounding. Signed-off-by: Richard Henderson --- target-alpha/translate.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'target-alpha') diff --git a/target-alpha/translate.c b/target-alpha/translate.c index b3c5dca425..94dab26b56 100644 --- a/target-alpha/translate.c +++ b/target-alpha/translate.c @@ -2199,6 +2199,11 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn) /* MT_FPCR */ va = load_fpr(ctx, ra); gen_helper_store_fpcr(cpu_env, va); + if (ctx->tb_rm == QUAL_RM_D) { + /* Re-do the copy of the rounding mode to fp_status + the next time we use dynamic rounding. */ + ctx->tb_rm = -1; + } break; case 0x025: /* MF_FPCR */ -- cgit v1.2.3