diff options
author | Richard Henderson <rth@twiddle.net> | 2014-06-28 10:25:36 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2015-05-18 13:03:46 -0700 |
commit | 9d5a626b2c3fa98761b35b5e2ac86f7adb231002 (patch) | |
tree | a48d8d2a9f2f017c515df35e55c29c1336110d5c /target-alpha | |
parent | 3da653fa05579579b0ba55a02ffa2aa3d466f01b (diff) | |
download | qemu-9d5a626b2c3fa98761b35b5e2ac86f7adb231002.tar.gz qemu-9d5a626b2c3fa98761b35b5e2ac86f7adb231002.tar.bz2 qemu-9d5a626b2c3fa98761b35b5e2ac86f7adb231002.zip |
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.c | 5 |
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 */ |