summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-09-25 21:55:47 +0000
committerUlrich Drepper <drepper@redhat.com>1998-09-25 21:55:47 +0000
commit390a4882ffd0e4092641ffdd6c0e017e41793d0c (patch)
treee333892580057f9dc28819fe3f153e84823d8d3d
parente503270ca511dd3092c953fe5f9a178f0d04b1ad (diff)
downloadglibc-390a4882ffd0e4092641ffdd6c0e017e41793d0c.tar.gz
glibc-390a4882ffd0e4092641ffdd6c0e017e41793d0c.tar.xz
glibc-390a4882ffd0e4092641ffdd6c0e017e41793d0c.zip
Update.
1998-09-25  Ulrich Drepper  <drepper@cygnus.com>

	* math/Makefile (gmp-objs): Add mp_clz_tab.

1998-09-25  David S. Miller  <davem@pierdol.cobaltmicro.com>

	* sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear bits don't
	set them.
	* stdlib/longlong.h (sparc udiv_qrnnd): Define inline version for
	cpus lacking hardware multiply and divide.

1998-09-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* db/Makefile ($(inst_slibdir)/libdb.so$(libdb1.so-version)): Use
	$(<F), not $(^F).

1998-09-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* db/btree/bt_delete.c: Fix -Wparentheses warning.

1998-09-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile ($(inst_includedir)/gnu/lib-names.h): Use
	$(do-install).

	* time/strftime.c (f_wkday): Remove duplicate definition.
	* time/strftime.c (my_strftime): Don't store past the end of a
-rw-r--r--ChangeLog29
-rw-r--r--Makefile5
-rw-r--r--db/Makefile2
-rw-r--r--db/btree/bt_delete.c12
-rw-r--r--math/Makefile2
-rw-r--r--stdlib/longlong.h39
-rw-r--r--sysdeps/sparc/fpu/feholdexcpt.c4
7 files changed, 71 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index c0a3218970..ffb638c4c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,35 @@
+1998-09-25  Ulrich Drepper  <drepper@cygnus.com>
+
+	* math/Makefile (gmp-objs): Add mp_clz_tab.
+
+1998-09-25  David S. Miller  <davem@pierdol.cobaltmicro.com>
+
+	* sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear bits don't
+	set them.
+	* stdlib/longlong.h (sparc udiv_qrnnd): Define inline version for
+	cpus lacking hardware multiply and divide.
+
+1998-09-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* db/Makefile ($(inst_slibdir)/libdb.so$(libdb1.so-version)): Use
+	$(<F), not $(^F).
+
+1998-09-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* db/btree/bt_delete.c: Fix -Wparentheses warning.
+
+1998-09-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* Makefile ($(inst_includedir)/gnu/lib-names.h): Use
+	$(do-install).
+
 1998-09-24  Ulrich Drepper  <drepper@cygnus.com>
 
 	* debug/catchsegv.sh: Also produce output if cloned process died.
 
 1998-09-24  Paul Eggert  <eggert@twinsun.com>
 
-	* strftime.c (f_wkday): Remove duplicate definition.
+	* time/strftime.c (f_wkday): Remove duplicate definition.
 	(f_wkday, f_month, a_wkday, a_month, ampm): Define as macros when
 	!defined _NL_CURRENT && !HAVE_STRFTIME; this propagates the
 	1998-09-11 fix to this case.
@@ -12,7 +37,7 @@
 
 1998-09-24  Paul Eggert  <eggert@twinsun.com>
 
-	* strftime.c (my_strftime): Don't store past the end of a
+	* time/strftime.c (my_strftime): Don't store past the end of a
 	zero-sized buffer.
 
 1998-09-24  Paul Eggert  <eggert@twinsun.com>
diff --git a/Makefile b/Makefile
index 711a5ac5db..c439a29d06 100644
--- a/Makefile
+++ b/Makefile
@@ -153,10 +153,7 @@ $(inst_includedir)/gnu/stubs.h: subdir_install
 ifeq (yes,$(build-shared))
 
 $(inst_includedir)/gnu/lib-names.h: $(common-objpfx)gnu/lib-names.h $(+force)
-	$(make-target-directory)
-	if test -r $@ && cmp -s $< $@; \
-	then echo 'gnu/lib-names.h unchanged'; \
-	else $(INSTALL_DATA) $< $@; fi
+	$(do-install)
 endif
 
 # The `glibcbug' script contains the version number and it shall be rebuild
diff --git a/db/Makefile b/db/Makefile
index 039a77e961..4df6f886b9 100644
--- a/db/Makefile
+++ b/db/Makefile
@@ -34,7 +34,7 @@ install-others	:= $(inst_slibdir)/libdb.so$(libdb1.so-version) \
 
 $(inst_slibdir)/libdb.so$(libdb1.so-version): $(inst_slibdir)/libdb1-$(version).so $(+force)
 	rm -f $@
-	$(LN_S) $(^F) $@
+	$(LN_S) $(<F) $@
 
 $(db1-headers:%=$(inst_includedir)/db1/%): $(inst_includedir)/db1/%: % $(+force)
 	$(do-install)
diff --git a/db/btree/bt_delete.c b/db/btree/bt_delete.c
index ece1ab656e..b654c9f1f8 100644
--- a/db/btree/bt_delete.c
+++ b/db/btree/bt_delete.c
@@ -154,7 +154,7 @@ __bt_stkacq(t, hp, c)
 	pgno_t pgno;
 	recno_t nextpg, prevpg;
 	int exact, level;
-	
+
 	/*
 	 * Find the first occurrence of the key in the tree.  Toss the
 	 * currently locked page so we don't hit an already-locked page.
@@ -270,7 +270,7 @@ __bt_stkacq(t, hp, c)
 		if ((h = mpool_get(t->bt_mp, prevpg, 0)) == NULL)
 			return (1);
 	}
-	
+
 
 ret:	mpool_put(t->bt_mp, h, 0);
 	return ((*hp = mpool_get(t->bt_mp, c->pg.pgno, 0)) == NULL);
@@ -402,7 +402,7 @@ __bt_pdelete(t, h)
 		/* Get the parent page. */
 		if ((pg = mpool_get(t->bt_mp, parent->pgno, 0)) == NULL)
 			return (RET_ERROR);
-		
+
 		index = parent->index;
 		bi = GETBINTERNAL(pg, index);
 
@@ -418,7 +418,7 @@ __bt_pdelete(t, h)
 		 * root page. If it's the rootpage, turn it back into an empty
 		 * leaf page.
 		 */
-		if (NEXTINDEX(pg) == 1)
+		if (NEXTINDEX(pg) == 1) {
 			if (pg->pgno == P_ROOT) {
 				pg->lower = BTDATAOFF;
 				pg->upper = t->bt_psize;
@@ -428,7 +428,7 @@ __bt_pdelete(t, h)
 					return (RET_ERROR);
 				continue;
 			}
-		else {
+		} else {
 			/* Pack remaining key items at the end of the page. */
 			nksize = NBINTERNAL(bi->ksize);
 			from = (char *)pg + pg->upper;
@@ -571,7 +571,7 @@ __bt_curdel(t, key, h, index)
 			key = &c->key;
 		}
 		/* Check previous key, if not at the beginning of the page. */
-		if (index > 0) { 
+		if (index > 0) {
 			e.page = h;
 			e.index = index - 1;
 			if (__bt_cmp(t, key, &e) == 0) {
diff --git a/math/Makefile b/math/Makefile
index 5110375413..9e6869a0e5 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -156,7 +156,7 @@ o = .os
 endif
 gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%$o,\
 		      add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \
-		      lshift rshift)
+		      lshift rshift mp_clz_tab)
 $(objpfx)atest-exp: $(gmp-objs)
 $(objpfx)atest-sincos: $(gmp-objs)
 $(objpfx)atest-exp2: $(gmp-objs)
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
index 197aac41da..4e41ac4a25 100644
--- a/stdlib/longlong.h
+++ b/stdlib/longlong.h
@@ -1,5 +1,5 @@
 /* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
-   Copyright (C) 1991, 92, 93, 94, 96, 97 Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -1135,12 +1135,39 @@ extern USItype __udiv_qrnnd ();
 #define UMUL_TIME 39		/* 39 instructions */
 #endif
 #ifndef udiv_qrnnd
-#ifndef LONGLONG_STANDALONE
+/* It's quite necessary to add this much assembler for the sparc.
+   The default udiv_qrnnd (in C) is more than 10 times slower!  */
 #define udiv_qrnnd(q, r, n1, n0, d) \
-  do { USItype __r;							\
-    (q) = __udiv_qrnnd (&__r, (n1), (n0), (d));				\
-    (r) = __r;								\
-  } while (0)
+  __asm__ ("! Inlined udiv_qrnnd
+	mov	32,%%g1
+	subcc	%1,%2,%%g0
+1:	bcs	5f
+	 addxcc %0,%0,%0	! shift n1n0 and a q-bit in lsb
+	sub	%1,%2,%1	! this kills msb of n
+	addx	%1,%1,%1	! so this can't give carry
+	subcc	%%g1,1,%%g1
+2:	bne	1b
+	 subcc	%1,%2,%%g0
+	bcs	3f
+	 addxcc %0,%0,%0	! shift n1n0 and a q-bit in lsb
+	b	3f
+	 sub	%1,%2,%1	! this kills msb of n
+4:	sub	%1,%2,%1
+5:	addxcc	%1,%1,%1
+	bcc	2b
+	 subcc	%%g1,1,%%g1
+! Got carry from n.  Subtract next step to cancel this carry.
+	bne	4b
+	 addcc	%0,%0,%0	! shift n1n0 and a 0-bit in lsb
+	sub	%1,%2,%1
+3:	xnor	%0,0,%0
+	! End of inline udiv_qrnnd"					\
+	   : "=&r" ((USItype)(q)),					\
+	     "=&r" ((USItype)(r))					\
+	   : "r" ((USItype)(d)),					\
+	     "1" ((USItype)(n1)),					\
+	     "0" ((USItype)(n0)) : "%g1" __AND_CLOBBER_CC)
+#define UDIV_TIME (3+7*32)	/* 7 instructions/iteration. 32 iterations. */
 extern USItype __udiv_qrnnd __P ((USItype *, USItype, USItype, USItype));
 #define UDIV_TIME 140
 #endif /* LONGLONG_STANDALONE */
diff --git a/sysdeps/sparc/fpu/feholdexcpt.c b/sysdeps/sparc/fpu/feholdexcpt.c
index 9b4c2134f7..b86671ca28 100644
--- a/sysdeps/sparc/fpu/feholdexcpt.c
+++ b/sysdeps/sparc/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
 /* Store current floating-point environment and clear exceptions.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -27,7 +27,7 @@ feholdexcept (fenv_t *envp)
   __fenv_stfsr (*envp);
 
   /* Set all exceptions to non-stop.  */
-  tmp = *envp | (0x1f << 23);
+  tmp = *envp & ~(0x1f << 23);
 
   __fenv_ldfsr (tmp);