Module Name: src
Committed By: christos
Date: Sun Jun 5 14:43:13 UTC 2011
Modified Files:
src/lib/libc/arch/i386/gdtoa: gd_qnan.h
src/lib/libc/arch/i386/gen: isnanl.c
src/lib/libc/arch/x86_64/gdtoa: gd_qnan.h
src/lib/libc/arch/x86_64/gen: isnanl.c
Log Message:
Revert previous and make frach be 0xc0000000 for NAN's generated by strtold()
as suggested by tron.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/arch/i386/gdtoa/gd_qnan.h
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/arch/i386/gen/isnanl.c
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/arch/x86_64/gdtoa/gd_qnan.h
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/arch/x86_64/gen/isnanl.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/arch/i386/gdtoa/gd_qnan.h
diff -u src/lib/libc/arch/i386/gdtoa/gd_qnan.h:1.1 src/lib/libc/arch/i386/gdtoa/gd_qnan.h:1.2
--- src/lib/libc/arch/i386/gdtoa/gd_qnan.h:1.1 Wed Jan 25 10:33:28 2006
+++ src/lib/libc/arch/i386/gdtoa/gd_qnan.h Sun Jun 5 10:43:12 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: gd_qnan.h,v 1.1 2006/01/25 15:33:28 kleink Exp $ */
+/* $NetBSD: gd_qnan.h,v 1.2 2011/06/05 14:43:12 christos Exp $ */
#define f_QNAN 0x7fc00000
#define d_QNAN0 0x0
@@ -6,6 +6,6 @@
#define ldus_QNAN0 0x0
#define ldus_QNAN1 0x0
#define ldus_QNAN2 0x0
-#define ldus_QNAN3 0x4000
+#define ldus_QNAN3 0xc000
#define ldus_QNAN4 0x7fff
/* 2 bytes of tail padding follow, per i386 ABI */
Index: src/lib/libc/arch/i386/gen/isnanl.c
diff -u src/lib/libc/arch/i386/gen/isnanl.c:1.7 src/lib/libc/arch/i386/gen/isnanl.c:1.8
--- src/lib/libc/arch/i386/gen/isnanl.c:1.7 Sat Jun 4 11:45:41 2011
+++ src/lib/libc/arch/i386/gen/isnanl.c Sun Jun 5 10:43:13 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: isnanl.c,v 1.7 2011/06/04 15:45:41 christos Exp $ */
+/* $NetBSD: isnanl.c,v 1.8 2011/06/05 14:43:13 christos Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -40,7 +40,7 @@
#if 0
static char sccsid[] = "@(#)isinf.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: isnanl.c,v 1.7 2011/06/04 15:45:41 christos Exp $");
+__RCSID("$NetBSD: isnanl.c,v 1.8 2011/06/05 14:43:13 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -58,6 +58,7 @@
u.extu_ld = x;
- return u.extu_ext.ext_exp == EXT_EXP_INFNAN &&
- (u.extu_ext.ext_frach != 0 || u.extu_ext.ext_fracl != 0);
+ return (u.extu_ext.ext_exp == EXT_EXP_INFNAN &&
+ (u.extu_ext.ext_frach & 0x80000000) != 0 &&
+ (u.extu_ext.ext_frach != 0x80000000 || u.extu_ext.ext_fracl != 0));
}
Index: src/lib/libc/arch/x86_64/gdtoa/gd_qnan.h
diff -u src/lib/libc/arch/x86_64/gdtoa/gd_qnan.h:1.2 src/lib/libc/arch/x86_64/gdtoa/gd_qnan.h:1.3
--- src/lib/libc/arch/x86_64/gdtoa/gd_qnan.h:1.2 Sun Mar 20 19:16:07 2011
+++ src/lib/libc/arch/x86_64/gdtoa/gd_qnan.h Sun Jun 5 10:43:13 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: gd_qnan.h,v 1.2 2011/03/20 23:16:07 christos Exp $ */
+/* $NetBSD: gd_qnan.h,v 1.3 2011/06/05 14:43:13 christos Exp $ */
#define f_QNAN 0x7fc00000
#define d_QNAN0 0x0
@@ -10,6 +10,6 @@
#define ldus_QNAN0 0x0
#define ldus_QNAN1 0x0
#define ldus_QNAN2 0x0
-#define ldus_QNAN3 0x4000
+#define ldus_QNAN3 0xc000
#define ldus_QNAN4 0x7fff
/* 6 bytes of tail padding follow, per AMD64 ABI */
Index: src/lib/libc/arch/x86_64/gen/isnanl.c
diff -u src/lib/libc/arch/x86_64/gen/isnanl.c:1.7 src/lib/libc/arch/x86_64/gen/isnanl.c:1.8
--- src/lib/libc/arch/x86_64/gen/isnanl.c:1.7 Sat Jun 4 11:45:41 2011
+++ src/lib/libc/arch/x86_64/gen/isnanl.c Sun Jun 5 10:43:13 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: isnanl.c,v 1.7 2011/06/04 15:45:41 christos Exp $ */
+/* $NetBSD: isnanl.c,v 1.8 2011/06/05 14:43:13 christos Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -40,7 +40,7 @@
#if 0
static char sccsid[] = "@(#)isinf.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: isnanl.c,v 1.7 2011/06/04 15:45:41 christos Exp $");
+__RCSID("$NetBSD: isnanl.c,v 1.8 2011/06/05 14:43:13 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -58,6 +58,7 @@
u.extu_ld = x;
- return u.extu_ext.ext_exp == EXT_EXP_INFNAN &&
- (u.extu_ext.ext_frach != 0 || u.extu_ext.ext_fracl != 0);
+ return (u.extu_ext.ext_exp == EXT_EXP_INFNAN &&
+ (u.extu_ext.ext_frach & 0x80000000) != 0 &&
+ (u.extu_ext.ext_frach != 0x80000000 || u.extu_ext.ext_fracl != 0));
}