From: Laurent Vivier <laur...@vivier.eu> Signed-off-by: Laurent Vivier <laur...@vivier.eu> --- target-m68k/helper.c | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/target-m68k/helper.c b/target-m68k/helper.c index 17f2d48..d4364f7 100644 --- a/target-m68k/helper.c +++ b/target-m68k/helper.c @@ -1442,20 +1442,16 @@ void HELPER(tan_FP0)(CPUState *env) void HELPER(exp_FP0)(CPUState *env) { floatx80 f; - float32 res; - - /* exp(x) = exp2(x * log2(e)) */ + long double res; f = FP0_to_floatx80(env); DBG_FPUH("exp_FP0 %Lg", floatx80_to_ldouble(f)); - f = floatx80_mul(f, floatx80_log2e, &env->fp_status); - res = float32_exp2(floatx80_to_float32(f, &env->fp_status), - &env->fp_status); + res = expl(floatx80_to_ldouble(f)); - DBG_FPU(" = %f\n", FLOAT(res)); - floatx80_to_FP0(env, float32_to_floatx80(res, &env->fp_status)); + DBG_FPU(" = %Lg\n", res); + floatx80_to_FP0(env, ldouble_to_floatx80(res)); } void HELPER(exp2_FP0)(CPUState *env) -- 1.7.2.3