diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-06-26 22:23:01 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-06-26 22:23:01 +0000 |
commit | ae1025be4026d5d4beb605541854d800ce05ee4e (patch) | |
tree | 275cb2d2e815cde5aebdde6bce264ea88a8d4f61 /sysdeps/m68k | |
parent | cdd225ad1b74d1748f15bd80cdde13e0326fad1e (diff) | |
download | glibc-ae1025be4026d5d4beb605541854d800ce05ee4e.tar glibc-ae1025be4026d5d4beb605541854d800ce05ee4e.tar.gz glibc-ae1025be4026d5d4beb605541854d800ce05ee4e.tar.bz2 glibc-ae1025be4026d5d4beb605541854d800ce05ee4e.zip |
Updated.cvs/libc-ud-970626
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')
-rw-r--r-- | sysdeps/m68k/bsd-_setjmp.S | 28 | ||||
-rw-r--r-- | sysdeps/m68k/bsd-setjmp.S | 28 | ||||
-rw-r--r-- | sysdeps/m68k/elf/start.S | 34 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/bits/mathdef.h | 2 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/bits/mathinline.h | 36 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/s_ilogb.c | 26 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/s_ilogbf.c | 2 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/s_ilogbl.c | 2 |
8 files changed, 75 insertions, 83 deletions
diff --git a/sysdeps/m68k/bsd-_setjmp.S b/sysdeps/m68k/bsd-_setjmp.S index dc1f52c6aa..f1551521d3 100644 --- a/sysdeps/m68k/bsd-_setjmp.S +++ b/sysdeps/m68k/bsd-_setjmp.S @@ -1,21 +1,21 @@ /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. m68k version. -Copyright (C) 1994 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1994, 1997 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 -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* This just does a tail-call to `__sigsetjmp (ARG, 0)'. We cannot do it in C because it must be a tail-call, so frame-unwinding diff --git a/sysdeps/m68k/bsd-setjmp.S b/sysdeps/m68k/bsd-setjmp.S index 7158907cfe..8074719639 100644 --- a/sysdeps/m68k/bsd-setjmp.S +++ b/sysdeps/m68k/bsd-setjmp.S @@ -1,21 +1,21 @@ /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. m68k version. -Copyright (C) 1994 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1994, 1997 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 -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* This just does a tail-call to `__sigsetjmp (ARG, 1)'. We cannot do it in C because it must be a tail-call, so frame-unwinding diff --git a/sysdeps/m68k/elf/start.S b/sysdeps/m68k/elf/start.S index 1b622d6e08..6c7cd4b99d 100644 --- a/sysdeps/m68k/elf/start.S +++ b/sysdeps/m68k/elf/start.S @@ -1,33 +1,33 @@ /* Startup code compliant to the ELF m68k ABI. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1996, 1997 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 -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* This is the canonical entry point, usually the first thing in the text segment. The SVR4/m68k ABI says that when the entry point runs, most registers' values are unspecified, except for: %a1 Contains a function pointer to be registered with `atexit'. - This is how the dynamic linker arranges to have DT_FINI + This is how the dynamic linker arranges to have DT_FINI functions called for shared libraries that have been loaded before this code runs. %sp The stack contains the arguments and environment: - 0(%sp) argc + 0(%sp) argc 4(%sp) argv[0] ... (4*argc)(%sp) NULL @@ -36,7 +36,7 @@ Cambridge, MA 02139, USA. */ NULL */ - .text + .text .globl _start _start: /* Clear the frame pointer. The ABI suggests this be done, to mark 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> |