diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2003-11-11 00:36:38 +0300 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2003-11-11 00:36:38 +0300 |
commit | 030441fc690a0a03107c00fe619b0429fbc6196d (patch) | |
tree | fafb005ce2d468b2fd2e4dec8b6816577abb9f75 /newlib/libc/machine/powerpc | |
parent | 8398809e7d682af5dd6bbed7db0cce0f74190040 (diff) |
2003-11-10 Jeff Johnston <jjohnstn@redhat.com>
* libc/machine/powerpc/ufix64toa.c (_ufix64to_r): Fix shifts
to use (Ebits + 1) which accounts for the sign-bit.
Diffstat (limited to 'newlib/libc/machine/powerpc')
-rw-r--r-- | newlib/libc/machine/powerpc/ufix64toa.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/newlib/libc/machine/powerpc/ufix64toa.c b/newlib/libc/machine/powerpc/ufix64toa.c index 6f0d12870..450e0a352 100644 --- a/newlib/libc/machine/powerpc/ufix64toa.c +++ b/newlib/libc/machine/powerpc/ufix64toa.c @@ -74,13 +74,13 @@ _DEFUN (_ufix64toa_r, (rptr, value, mode, ndigits, decpt, sign, rve), /* build long double */ exp = -negexp + Bias; word0(ldbl) = (exp << Exp_shift); - word1(ldbl) = hiword(fix64) << (32-Ebits); - word2(ldbl) = loword(fix64) << (32-Ebits); + word1(ldbl) = hiword(fix64) << (32-Ebits-1); + word2(ldbl) = loword(fix64) << (32-Ebits-1); word3(ldbl) = 0; - if (Ebits < 32) + if (Ebits+1 < 32) { - word0(ldbl) |= hiword(fix64) >> Ebits; - word1(ldbl) |= loword(fix64) >> Ebits; + word0(ldbl) |= hiword(fix64) >> (Ebits + 1); + word1(ldbl) |= loword(fix64) >> (Ebits + 1); } } |