aboutsummaryrefslogtreecommitdiff
path: root/target-alpha
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2014-06-28 10:25:36 -0700
committerRichard Henderson <rth@twiddle.net>2015-05-18 13:03:46 -0700
commit9d5a626b2c3fa98761b35b5e2ac86f7adb231002 (patch)
treea48d8d2a9f2f017c515df35e55c29c1336110d5c /target-alpha
parent3da653fa05579579b0ba55a02ffa2aa3d466f01b (diff)
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 <rth@twiddle.net>
Diffstat (limited to 'target-alpha')
-rw-r--r--target-alpha/translate.c5
1 files changed, 5 insertions, 0 deletions
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 */