aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-24 14:33:17 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-24 14:33:17 +0000
commit57e4c06ed749e14c7c183996883dee27c23a0ade (patch)
treecbb162b3e0c76f0e4922067465619b0da9103b86
parent09d459a1db9b19d1ff66e98620f1ea16aba379de (diff)
fscale fix (bug noticed by Kuwanger, fix by malc)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1528 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-i386/exec.h1
-rw-r--r--target-i386/helper.c6
2 files changed, 2 insertions, 5 deletions
diff --git a/target-i386/exec.h b/target-i386/exec.h
index a3bbea9999..b1145017d5 100644
--- a/target-i386/exec.h
+++ b/target-i386/exec.h
@@ -337,6 +337,7 @@ static inline void stfl(target_ulong ptr, float v)
#define atan2 atan2l
#define floor floorl
#define ceil ceill
+#define ldexp ldexpl
#else
#define floatx_to_int32 float64_to_int32
#define floatx_to_int64 float64_to_int64
diff --git a/target-i386/helper.c b/target-i386/helper.c
index c83dbf2190..01b663f381 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -2888,11 +2888,7 @@ void helper_frndint(void)
void helper_fscale(void)
{
- CPU86_LDouble fpsrcop, fptemp;
-
- fpsrcop = 2.0;
- fptemp = pow(fpsrcop,ST1);
- ST0 *= fptemp;
+ ST0 = ldexp (ST0, (int)(ST1));
}
void helper_fsin(void)