about summary refs log tree commit diff
path: root/sysdeps/m68k/fpu
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-06-26 22:23:01 +0000
committerUlrich Drepper <drepper@redhat.com>1997-06-26 22:23:01 +0000
commitae1025be4026d5d4beb605541854d800ce05ee4e (patch)
tree275cb2d2e815cde5aebdde6bce264ea88a8d4f61 /sysdeps/m68k/fpu
parentcdd225ad1b74d1748f15bd80cdde13e0326fad1e (diff)
downloadglibc-ae1025be4026d5d4beb605541854d800ce05ee4e.tar.gz
glibc-ae1025be4026d5d4beb605541854d800ce05ee4e.tar.xz
glibc-ae1025be4026d5d4beb605541854d800ce05ee4e.zip
1997-06-26 21:50  Ulrich Drepper  <drepper@cygnus.com>

	* math/math.h: Move definition of macros for unordered comparison
	after inclusion of <bits/mathinline.h>.
	* sysdeps/i386/fpu/bits/mathinline.h: Don't undef macros for
	unordered comparison before definition.
	* sysdeps/m68k/fpu/bits/mathinline.h: Likewise.

	* Makerules: Move definition of load-map-file before use.
	(lib%.so): Depend on load-map-file, not lib%-map.

	* manual/lgpl.texinfo: Likewise.

1997-06-24 09:40  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/fpu/bits/mathinline.h: Don't define __ilogb.
	* sysdeps/m68k/fpu/s_ilogb.c: Define it here.  Handle zero, NaN
	and infinity specially.
	* sysdeps/m68k/fpu/s_ilogbf.c, sysdeps/m68k/fpu/s_ilogbl.c:
	Adapted.

	* sysdeps/m68k/fpu/bits/mathdef.h (FP_ILOGB0): Correct value.

1997-06-26 17:06  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Don't use .long in tests since some strange
	platforms without binutils don't know this.
	Redirect output of test commands correctly.
	Patch by Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>.

	* hurd/hurdsig.c (_hurdsig_init): Call _hurd_self_sigstate.
	Patch by Kazumoto Kojima <kkojima@kk.info.kanagawa-u.ac.jp>.

1997-06-26 09:02  Fila Kolodny  <fila@ibi.com>

	* sysdeps/mach/hurd/abi-tag.h: New file.

	* sysdeps/mach/bits/libc-lock.h: Add typedef for __libc_key_t.
	* sysdeps/stub/bits/libc-lock.h: Likewise.

	* sysdeps/mach/hurd/accept.c (accept): Fix type of parameter addrarg.
	Add variable addr containing the desired part of the union.
	* sysdeps/mach/hurd/recvfrom.c (recvfrom): Likewise.
	* sysdeps/mach/hurd/getsockname.c (getsockname): Likewise.
	* sysdeps/mach/hurd/getpeername.c (getpeername): Likewise.
	* sysdeps/mach/hurd/connect.c (__connect): Likewise.
	* sysdeps/mach/hurd/bind.c (bind): Likewise.

	* sysdeps/mach/hurd/select.c (__select): Change MACH_MSG_SIZE_INTEGER_T
	to sizeof(MACH_MSG_TYPE_INTEGER_T).

	* io/ftw.c (ftw_startup): Use PATH_MAX only if defined.

	* sysdeps/mach/hurd/open.c (__open): Fix type of parameter file.

	* sysdeps/mach/hurd/sysd-stdio.c (__stdio_reopen): Add closefn to
	paramater list since it is used.

	* sysdeps/mach/hurd/rename.c (rename): Fix type of paramater new.

	* sysdeps/mach/hurd/sigaltstack.c (sigaltstack): Change parameter from
	ss to argss.

1997-06-24 14:02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* Rules: Update copyright.
	* mach/Machrules: Likewise.

1997-06-26 14:28  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Fix accidently removed AC_OUTPUT line.
	Reported by Andreas Jaeger.

	* time/strftime.c: Don't define `memcpy' macro if HAVE_MEMCPY is
	defined.  Reported by Akim Demaille <demaille@inf.enst.fr>.

	* sysdeps/generic/getdomain.c: Include handling for stub case.
	This eliminated the only case of a function in generic and stub.
	* sysdeps/stub/getdomain.c: Removed.
	Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.

1997-06-23 22:20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/alpha/_mcount.S: Update and reformat copyright,
	remove trailing white spaces and send through unexpand.
	* sysdeps/alpha/bb_init_func.S: Likewise.
	* sysdeps/alpha/bzero.S: Likewise.
	* sysdeps/alpha/ffs.S: Likewise.
	* sysdeps/alpha/memset.S: Likewise.
	* sysdeps/alpha/s_fabs.S: Likewise.
	* sysdeps/alpha/strcmp.S: Likewise.
	* sysdeps/alpha/strlen.S: Likewise.
	* sysdeps/alpha/strncmp.S: Likewise.
	* sysdeps/alpha/strncpy.S: Likewise.
	* sysdeps/alpha/strrchr.S: Likewise.
	* sysdeps/alpha/stxcpy.S: Likewise.
	* sysdeps/alpha/stxncpy.S: Likewise.
	* sysdeps/alpha/elf/start.S: Likewise.
	* sysdeps/i386/strchr.S: Likewise.
	* sysdeps/m68k/bsd-_setjmp.S: Likewise.
	* sysdeps/m68k/bsd-setjmp.S: Likewise.
	* sysdeps/m68k/elf/start.S: Likewise.
	* sysdeps/mach/alpha/syscall.S: Likewise.
	* sysdeps/mach/i386/syscall.S: Likewise.
	* sysdeps/mips/elf/start.S: Likewise.
	* sysdeps/sparc/alloca.S: Likewise.
	* sysdeps/standalone/i386/start.S: Likewise.
	* sysdeps/standalone/i386/force_cpu386/strtsupp.S: Likewise.
	* sysdeps/standalone/i960/start.S: Likewise.
	* sysdeps/standalone/m68k/m68020/start.S: Likewise.
	* sysdeps/unix/_exit.S: Likewise.
	* sysdeps/unix/fork.S: Likewise.
	* sysdeps/unix/getegid.S: Likewise.
	* sysdeps/unix/geteuid.S: Likewise.
	* sysdeps/unix/getppid.S: Likewise.
	* sysdeps/unix/syscall.S: Likewise.
	* sysdeps/unix/arm/brk.S: Likewise.
	* sysdeps/unix/arm/fork.S: Likewise.
	* sysdeps/unix/bsd/hp/m68k/brk.S: Likewise.
	* sysdeps/unix/bsd/hp/m68k/vfork.S: Likewise.
	* sysdeps/unix/bsd/hp/m68k/wait3.S: Likewise.
	* sysdeps/unix/bsd/i386/vfork.S: Likewise.
	* sysdeps/unix/bsd/i386/wait3.S: Likewise.
	* sysdeps/unix/bsd/m68k/pipe.S: Likewise.
	* sysdeps/unix/bsd/m68k/syscall.S: Likewise.
	* sysdeps/unix/bsd/m68k/sysdep.S: Likewise.
	* sysdeps/unix/bsd/m68k/wait.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/brk.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/fork.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/killpg.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/pipe.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/recv.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/send.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/sigblock.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/sigpause.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/sigsetmask.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/sigvec.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/start.S: Likewise.
	* sysdeps/unix/bsd/osf/alpha/vhangup.S: Likewise.
	* sysdeps/unix/bsd/sequent/i386/getgroups.S: Likewise.
	* sysdeps/unix/bsd/sequent/i386/sigvec.S: Likewise.
	* sysdeps/unix/bsd/sequent/i386/syscall.S: Likewise.
	* sysdeps/unix/bsd/sun/sigreturn.S: Likewise.
	* sysdeps/unix/bsd/sun/m68k/brk.S: Likewise.
	* sysdeps/unix/bsd/sun/m68k/sethostid.S: Likewise.
	* sysdeps/unix/bsd/sun/m68k/syscall.S: Likewise.
	* sysdeps/unix/bsd/sun/m68k/vfork.S: Likewise.
	* sysdeps/unix/bsd/sun/sparc/sethostid.S: Likewise.
	* sysdeps/unix/bsd/ultrix4/wait3.S: Likewise.
	* sysdeps/unix/bsd/ultrix4/mips/__handler.S: Likewise.
	* sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise.
	* sysdeps/unix/bsd/ultrix4/mips/vfork.S: Likewise.
	* sysdeps/unix/bsd/vax/brk.S: Likewise.
	* sysdeps/unix/bsd/vax/pipe.S: Likewise.
	* sysdeps/unix/bsd/vax/sysdep.S: Likewise.
	* sysdeps/unix/bsd/vax/vfork.S: Likewise.
	* sysdeps/unix/bsd/vax/wait.S: Likewise.
	* sysdeps/unix/bsd/vax/wait3.S: Likewise.
	* sysdeps/unix/i386/brk.S: Likewise.
	* sysdeps/unix/i386/fork.S: Likewise.
	* sysdeps/unix/i386/pipe.S: Likewise.
	* sysdeps/unix/i386/sigreturn.S: Likewise.
	* sysdeps/unix/i386/syscall.S: Likewise.
	* sysdeps/unix/i386/vfork.S: Likewise.
	* sysdeps/unix/i386/wait.S: Likewise.
	* sysdeps/unix/mips/brk.S: Likewise.
	* sysdeps/unix/mips/fork.S: Likewise.
	* sysdeps/unix/mips/pipe.S: Likewise.
	* sysdeps/unix/mips/sigreturn.S: Likewise.
	* sysdeps/unix/mips/sysdep.S: Likewise.
	* sysdeps/unix/mips/wait.S: Likewise.
	* sysdeps/unix/sparc/brk.S: Likewise.
	* sysdeps/unix/sparc/fork.S: Likewise.
	* sysdeps/unix/sparc/pipe.S: Likewise.
	* sysdeps/unix/sparc/sysdep.S: Likewise.
	* sysdeps/unix/sparc/vfork.S: Likewise.
	* sysdeps/unix/sysv/i386/signal.S: Likewise.
	* sysdeps/unix/sysv/i386/time.S: Likewise.
	* sysdeps/unix/sysv/irix4/__handler.S: Likewise.
	* sysdeps/unix/sysv/irix4/sigreturn.S: Likewise.
	* sysdeps/unix/sysv/irix4/uname.S: Likewise.
	* sysdeps/unix/sysv/irix4/wait.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/pipe.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/sigreturn.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/socket.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/fork.S: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/sigaction.S: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/sysconf.S: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/uname.S: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/waitpid.S: Likewise.
	* sysdeps/unix/sysv/sysv4/i386/sys-sig.S: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/fsync.S: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.S: Likewise.
	* sysdeps/vax/bsd-_setjmp.S: Likewise.
	* sysdeps/vax/bsd-setjmp.S: Likewise.
Diffstat (limited to 'sysdeps/m68k/fpu')
-rw-r--r--sysdeps/m68k/fpu/bits/mathdef.h2
-rw-r--r--sysdeps/m68k/fpu/bits/mathinline.h36
-rw-r--r--sysdeps/m68k/fpu/s_ilogb.c26
-rw-r--r--sysdeps/m68k/fpu/s_ilogbf.c2
-rw-r--r--sysdeps/m68k/fpu/s_ilogbl.c2
5 files changed, 30 insertions, 38 deletions
diff --git a/sysdeps/m68k/fpu/bits/mathdef.h b/sysdeps/m68k/fpu/bits/mathdef.h
index 4eaa58a3a9..c2b4eff920 100644
--- a/sysdeps/m68k/fpu/bits/mathdef.h
+++ b/sysdeps/m68k/fpu/bits/mathdef.h
@@ -36,5 +36,5 @@ typedef long double double_t;	/* `double' expressions are evaluated as
 #define INFINITY	HUGE_VALL
 
 /* The values returned by `ilogb' for 0 and NaN respectively.  */
-#define FP_ILOGB0	0
+#define FP_ILOGB0	0x80000000
 #define FP_ILOGBNAN	0x7fffffff
diff --git a/sysdeps/m68k/fpu/bits/mathinline.h b/sysdeps/m68k/fpu/bits/mathinline.h
index 8899b752ff..79245c07a1 100644
--- a/sysdeps/m68k/fpu/bits/mathinline.h
+++ b/sysdeps/m68k/fpu/bits/mathinline.h
@@ -44,12 +44,12 @@
    is the name of the fpu operation (without leading f).  */
 
 #if defined __USE_MISC || defined __USE_ISOC9X
-#define	__inline_mathop(func, op)			\
+# define __inline_mathop(func, op)			\
   __inline_mathop1(double, func, op)			\
   __inline_mathop1(float, __CONCAT(func,f), op)		\
   __inline_mathop1(long double, __CONCAT(func,l), op)
 #else
-#define	__inline_mathop(func, op)			\
+# define __inline_mathop(func, op)			\
   __inline_mathop1(double, func, op)
 #endif
 
@@ -257,17 +257,6 @@ __m81_defun (int, __CONCAT(__signbit,s), (float_type __value))		  \
   return (__fpsr >> 27) & 1;						  \
 }									  \
 									  \
-__m81_defun (int, __CONCAT(__ilogb,s), (float_type __x))		  \
-{									  \
-  float_type __result;							  \
-  if (__m81_u(__CONCAT(__isnan,s)) (__x))				  \
-    /* The stupid standard requires us to return a specific value where	  \
-       it would depend on the bitpattern of the NaN.  */		  \
-    return 0x7fffffff;							  \
-  __asm("fgetexp%.x %1, %0" : "=f" (__result) : "f" (__x));		  \
-  return (int) __result;						  \
-}									  \
-									  \
 __m81_defun (float_type, __CONCAT(__scalbn,s),				  \
 	     (float_type __x, long int __n))				  \
 {									  \
@@ -341,7 +330,6 @@ __inline_forward_c(double,scalbn, (double __x, long int __n), (__x, __n))
 #ifndef __USE_ISOC9X /* Conflict with macro of same name.  */
 __inline_forward_c(int,isnan, (double __value), (__value))
 #endif
-__inline_forward_c(int,ilogb, (double __value), (__value))
 #endif
 #ifdef __USE_ISOC9X
 __inline_forward_c(double,nearbyint, (double __value), (__value))
@@ -362,7 +350,6 @@ __inline_forward_c(int,isinff, (float __value), (__value))
 __inline_forward_c(int,finitef, (float __value), (__value))
 __inline_forward_c(float,scalbnf, (float __x, long int __n), (__x, __n))
 __inline_forward_c(int,isnanf, (float __value), (__value))
-__inline_forward_c(int,ilogbf, (float __value), (__value))
 #endif
 #ifdef __USE_ISOC9X
 __inline_forward_c(float,nearbyintf, (float __value), (__value))
@@ -382,7 +369,6 @@ __inline_forward_c(int,finitel, (long double __value), (__value))
 __inline_forward_c(long double,scalbnl, (long double __x, long int __n),
 		   (__x, __n))
 __inline_forward_c(int,isnanl, (long double __value), (__value))
-__inline_forward_c(int,ilogbl, (long double __value), (__value))
 #endif
 #ifdef __USE_ISOC9X
 __inline_forward_c(long double,nearbyintl, (long double __value), (__value))
@@ -405,48 +391,42 @@ __inline_forward(void,sincosl,
    m68k FPU supports this with special opcodes and we should use them.
    These must not be inline functions since we have to be able to handle
    all floating-point types.  */
-#undef isgreater
-#define isgreater(x, y)					\
+# define isgreater(x, y)					\
    __extension__					\
    ({ char __result;					\
       __asm__ ("fcmp%.x %2,%1; fsogt %0"		\
 	       : "=dm" (__result) : "f" (x), "f" (y));	\
       (int) __result; })
 
-#undef isgreaterequal
-#define isgreaterequal(x, y)				\
+# define isgreaterequal(x, y)				\
    __extension__					\
    ({ char __result;					\
       __asm__ ("fcmp%.x %2,%1; fsoge %0"		\
 	       : "=dm" (__result) : "f" (x), "f" (y));	\
       (int) __result; })
 
-#undef isless
-#define isless(x, y)					\
+# define isless(x, y)					\
    __extension__					\
    ({ char __result;					\
       __asm__ ("fcmp%.x %2,%1; fsolt %0"		\
 	       : "=dm" (__result) : "f" (x), "f" (y));	\
       (int) __result; })
 
-#undef islessequal
-#define islessequal(x, y)				\
+# define islessequal(x, y)				\
    __extension__					\
    ({ char __result;					\
       __asm__ ("fcmp%.x %2,%1; fsole %0"		\
 	       : "=dm" (__result) : "f" (x), "f" (y));	\
       (int) __result; })
 
-#undef islessgreater
-#define islessgreater(x, y)				\
+# define islessgreater(x, y)				\
    __extension__					\
    ({ char __result;					\
       __asm__ ("fcmp%.x %2,%1; fsogl %0"		\
 	       : "=dm" (__result) : "f" (x), "f" (y));	\
       (int) __result; })
 
-#undef isunordered
-#define isunordered(x, y)				\
+# define isunordered(x, y)				\
    __extension__					\
    ({ char __result;					\
       __asm__ ("fcmp%.x %2,%1; fsun %0"			\
diff --git a/sysdeps/m68k/fpu/s_ilogb.c b/sysdeps/m68k/fpu/s_ilogb.c
index a081a884d4..2d8f7d5082 100644
--- a/sysdeps/m68k/fpu/s_ilogb.c
+++ b/sysdeps/m68k/fpu/s_ilogb.c
@@ -19,21 +19,33 @@
 #define __LIBC_M81_MATH_INLINES
 #include <math.h>
 
-#ifndef FUNC
-#define FUNC ilogb
+#ifndef SUFF
+#define SUFF
 #endif
 #ifndef float_type
 #define float_type double
 #endif
 
-#define __CONCATX(a,b) __CONCAT(a,b)
+#define CONCATX(a,b) __CONCAT(a,b)
+#define s(name) CONCATX(name,SUFF)
+#define m81(func) __m81_u(s(func))
 
 int
-__CONCATX(__,FUNC) (x)
-     float_type x;
+s(__ilogb) (float_type x)
 {
-  return __m81_u(__CONCATX(__,FUNC))(x);
+  float_type result;
+  unsigned long x_cond;
+
+  x_cond = __m81_test (x);
+  /* We must return consistent values for zero and NaN.  */
+  if (x_cond & __M81_COND_ZERO)
+    return FP_ILOGB0;
+  if (x_cond & (__M81_COND_NAN | __M81_COND_INF))
+    return FP_ILOGBNAN;
+
+  __asm ("fgetexp%.x %1, %0" : "=f" (result) : "f" (x));
+  return (int) result;
 }
 
 #define weak_aliasx(a,b) weak_alias(a,b)
-weak_aliasx (__CONCATX(__,FUNC), FUNC)
+weak_aliasx (s(__ilogb), s(ilogb))
diff --git a/sysdeps/m68k/fpu/s_ilogbf.c b/sysdeps/m68k/fpu/s_ilogbf.c
index c0c2ffd18d..4031c42ff7 100644
--- a/sysdeps/m68k/fpu/s_ilogbf.c
+++ b/sysdeps/m68k/fpu/s_ilogbf.c
@@ -1,3 +1,3 @@
-#define FUNC ilogbf
+#define SUFF f
 #define float_type float
 #include <s_ilogb.c>
diff --git a/sysdeps/m68k/fpu/s_ilogbl.c b/sysdeps/m68k/fpu/s_ilogbl.c
index c3554d5c58..9c55a115e0 100644
--- a/sysdeps/m68k/fpu/s_ilogbl.c
+++ b/sysdeps/m68k/fpu/s_ilogbl.c
@@ -1,3 +1,3 @@
-#define FUNC ilogbl
+#define SUFF l
 #define float_type long double
 #include <s_ilogb.c>