From 030441fc690a0a03107c00fe619b0429fbc6196d Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Mon, 10 Nov 2003 21:36:38 +0000 Subject: 2003-11-10 Jeff Johnston * libc/machine/powerpc/ufix64toa.c (_ufix64to_r): Fix shifts to use (Ebits + 1) which accounts for the sign-bit. --- newlib/libc/machine/powerpc/ufix64toa.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'newlib/libc') 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); } } -- cgit v1.2.3