about summary refs log tree commit diff
path: root/soft-fp
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-01-04 17:51:12 +0000
committerUlrich Drepper <drepper@redhat.com>2000-01-04 17:51:12 +0000
commitcbc85992cd683cbadbf2ed2011cad1ee04aa42b5 (patch)
tree9a09d928fbaa199a801ae58cc0063c89bd0af0ef /soft-fp
parent52354636d3ba63e3467c9062f6ddbaf5138f0229 (diff)
downloadglibc-cbc85992cd683cbadbf2ed2011cad1ee04aa42b5.tar.gz
glibc-cbc85992cd683cbadbf2ed2011cad1ee04aa42b5.tar.xz
glibc-cbc85992cd683cbadbf2ed2011cad1ee04aa42b5.zip
Update.
2000-01-04  Andreas Jaeger  <aj@suse.de>

	* nss/nss_db/dummy-db.h (struct db24): Add missing field flags.
	(struct db27): Add missing fields byteswapped, join and flags;
	remove wrong member handleq.
	(struct dbc27): Correct lock field.

	* nss/makedb.c: Remove __P.

2000-01-04  Andreas Jaeger  <aj@suse.de>

	* nss/nss_db/db-open.c (internal_setent): Check for db_open for
	success, fix a memory leak and clean up function.

2000-01-04  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (install): Pass $(install_root) to ldconfig.
	Patch by Akira YOSHIYAMA <yosshy@tkf.att.ne.jp>.

2000-01-03  Jakub Jelinek  <jakub@redhat.com>

	* soft-fp/op-1.h: Fix division for machines using not normalizing
	version of udiv_qrnnd in longlong.h.
	* soft-fp/sysdeps/mips/sfp-machine.h: Likewise.
	* soft-fp/sysdeps/mips/mips64/sfp-machine.h: Likewise.
	* soft-fp/sysdeps/sparc/sparc64/sfp-machine.h: Likewise.
	Patch by Eddie C. Dost <ecd@skynet.be>.

	* soft-fp/soft-fp.h (QItype, UQItype): New types used by longlong.h.

2000-01-03  Andreas Schwab  <schwab@suse.de>

	* sysdeps/generic/dl-sysdep.c: Initialize __libc_multiple_libcs,
	needed for change in common symbol handing in newer binutils.
Diffstat (limited to 'soft-fp')
-rw-r--r--soft-fp/op-1.h12
-rw-r--r--soft-fp/soft-fp.h2
-rw-r--r--soft-fp/sysdeps/mips/mips64/sfp-machine.h2
-rw-r--r--soft-fp/sysdeps/mips/sfp-machine.h2
-rw-r--r--soft-fp/sysdeps/sparc/sparc64/sfp-machine.h2
5 files changed, 11 insertions, 9 deletions
diff --git a/soft-fp/op-1.h b/soft-fp/op-1.h
index 48bf4ce7e2..53e0fce1b1 100644
--- a/soft-fp/op-1.h
+++ b/soft-fp/op-1.h
@@ -199,25 +199,25 @@
 
 #define _FP_DIV_MEAT_1_udiv_norm(fs, R, X, Y)				\
   do {									\
-    _FP_W_TYPE _nh, _nl, _q, _r;					\
+    _FP_W_TYPE _nh, _nl, _q, _r, _y;					\
 									\
     /* Normalize Y -- i.e. make the most significant bit set.  */	\
-    Y##_f <<= _FP_WFRACXBITS_##fs - 1;					\
+    _y = Y##_f << _FP_WFRACXBITS_##fs;					\
 									\
     /* Shift X op correspondingly high, that is, up one full word.  */	\
-    if (X##_f <= Y##_f)							\
+    if (X##_f < Y##_f)							\
       {									\
+	R##_e--;							\
 	_nl = 0;							\
 	_nh = X##_f;							\
       }									\
     else								\
       {									\
-	R##_e++;							\
-	_nl = X##_f << (_FP_W_TYPE_SIZE-1);				\
+	_nl = X##_f << (_FP_W_TYPE_SIZE - 1);				\
 	_nh = X##_f >> 1;						\
       }									\
     									\
-    udiv_qrnnd(_q, _r, _nh, _nl, Y##_f);				\
+    udiv_qrnnd(_q, _r, _nh, _nl, _y);					\
     R##_f = _q | (_r != 0);						\
   } while (0)
 
diff --git a/soft-fp/soft-fp.h b/soft-fp/soft-fp.h
index 3c5072e516..26798ecf25 100644
--- a/soft-fp/soft-fp.h
+++ b/soft-fp/soft-fp.h
@@ -159,8 +159,10 @@ do {						\
 #define UWtype		_FP_W_TYPE
 #define W_TYPE_SIZE	_FP_W_TYPE_SIZE
 
+typedef int QItype __attribute__((mode(QI)));
 typedef int SItype __attribute__((mode(SI)));
 typedef int DItype __attribute__((mode(DI)));
+typedef unsigned int UQItype __attribute__((mode(QI)));
 typedef unsigned int USItype __attribute__((mode(SI)));
 typedef unsigned int UDItype __attribute__((mode(DI)));
 #if _FP_W_TYPE_SIZE == 32
diff --git a/soft-fp/sysdeps/mips/mips64/sfp-machine.h b/soft-fp/sysdeps/mips/mips64/sfp-machine.h
index 3f9d3abb8c..730deae872 100644
--- a/soft-fp/sysdeps/mips/mips64/sfp-machine.h
+++ b/soft-fp/sysdeps/mips/mips64/sfp-machine.h
@@ -11,7 +11,7 @@
   _FP_MUL_MEAT_2_wide_3mul(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
 
 #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm)
-#define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv(D,R,X,Y)
+#define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv_norm(D,R,X,Y)
 #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_2_udiv(Q,R,X,Y)
 
 #define _FP_NANFRAC_S		((_FP_QNANBIT_S << 1) - 1)
diff --git a/soft-fp/sysdeps/mips/sfp-machine.h b/soft-fp/sysdeps/mips/sfp-machine.h
index 575225a69b..3b2a40f0e2 100644
--- a/soft-fp/sysdeps/mips/sfp-machine.h
+++ b/soft-fp/sysdeps/mips/sfp-machine.h
@@ -10,7 +10,7 @@
 #define _FP_MUL_MEAT_Q(R,X,Y)				\
   _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
 
-#define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_udiv(S,R,X,Y)
+#define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_udiv_norm(S,R,X,Y)
 #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_2_udiv(D,R,X,Y)
 #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_4_udiv(Q,R,X,Y)
 
diff --git a/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h b/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h
index 0d82c60a30..4703dd070e 100644
--- a/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h
+++ b/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h
@@ -49,7 +49,7 @@ do {								\
 				_FP_MUL_MEAT_RESET_FE)
 
 #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm)
-#define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv(D,R,X,Y)
+#define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv_norm(D,R,X,Y)
 #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_2_udiv(Q,R,X,Y)
 
 #define _FP_NANFRAC_S		((_FP_QNANBIT_S << 1) - 1)