From 8379bfdbca195af9df1e6ecf67f04402bd80d471 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 24 Aug 2012 07:44:43 -0700 Subject: target-s390: Convert LFPC, SFPC Note that we were failing to set the rounding mode in fpu_status. Signed-off-by: Richard Henderson --- target-s390x/fpu_helper.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'target-s390x/fpu_helper.c') diff --git a/target-s390x/fpu_helper.c b/target-s390x/fpu_helper.c index ac530e9700..74b94f290f 100644 --- a/target-s390x/fpu_helper.c +++ b/target-s390x/fpu_helper.c @@ -577,3 +577,20 @@ uint64_t HELPER(sqxb)(CPUS390XState *env, uint64_t ah, uint64_t al) handle_exceptions(env, GETPC()); return RET128(ret); } + +/* set fpc */ +void HELPER(sfpc)(CPUS390XState *env, uint64_t fpc) +{ + static const int rnd[4] = { + float_round_nearest_even, + float_round_to_zero, + float_round_up, + float_round_down + }; + + /* Install everything in the main FPC. */ + env->fpc = fpc; + + /* Install the rounding mode in the shadow fpu_status. */ + set_float_rounding_mode(rnd[fpc & 3], &env->fpu_status); +} -- cgit v1.2.3