From df11547f5d598cf160b2ca751e845b2c29f93a12 Mon Sep 17 00:00:00 2001 From: Andrew Gallatin Date: Mon, 19 Jul 2004 23:56:07 +0000 Subject: Fix printing of long doubles to match the size that gcc is using. This fixes devstat consumers (like vmstat, iostat, systat) so they don't print crazy zillion digit numbers for disk transfers and bandwidth. According to gcc, long doubles are 64-bits, rather than 128 bits like the SVR4 ABI spec wants them to be.. Note that MacOSX also treats long doubles as 64-bits, and not 128 bits, so we are in good company. Reviewed by: das Approved by: grehan --- lib/libc/powerpc/_fpmath.h | 14 ++++++-------- lib/libc/powerpc/stdlib/gdtoa.mk | 5 ++--- 2 files changed, 8 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/libc/powerpc/_fpmath.h b/lib/libc/powerpc/_fpmath.h index 9672da30f3242..d96bac2cd4e8b 100644 --- a/lib/libc/powerpc/_fpmath.h +++ b/lib/libc/powerpc/_fpmath.h @@ -30,21 +30,19 @@ union IEEEl2bits { long double e; struct { unsigned int sign :1; - unsigned int exp :15; - unsigned long long manh :48; - unsigned long long manl :64; + unsigned int exp :11; + unsigned int manh :20; + unsigned int manl :32; } bits; }; #define mask_nbit_l(u) ((void)0) #define LDBL_IMPLICIT_NBIT -#define LDBL_MANH_SIZE 48 -#define LDBL_MANL_SIZE 64 +#define LDBL_MANH_SIZE 20 +#define LDBL_MANL_SIZE 32 #define LDBL_TO_ARRAY32(u, a) do { \ (a)[0] = (uint32_t)(u).bits.manl; \ - (a)[1] = (uint32_t)((u).bits.manl >> 32); \ - (a)[2] = (uint32_t)(u).bits.manh; \ - (a)[3] = (uint32_t)((u).bits.manh >> 32); \ + (a)[1] = (uint32_t)(u).bits.manh; \ } while(0) diff --git a/lib/libc/powerpc/stdlib/gdtoa.mk b/lib/libc/powerpc/stdlib/gdtoa.mk index f951a8dcad6b8..726531d843601 100644 --- a/lib/libc/powerpc/stdlib/gdtoa.mk +++ b/lib/libc/powerpc/stdlib/gdtoa.mk @@ -1,5 +1,4 @@ # $FreeBSD$ -# Long double is quad precision -GDTOASRCS+=strtopQ.c -MDSRCS+=machdep_ldisQ.c +# Long double is 64-bits +MDSRCS+=machdep_ldisd.c -- cgit v1.3