diff options
Diffstat (limited to 'sysdeps/i386')
-rw-r--r-- | sysdeps/i386/isinfl.c | 46 | ||||
-rw-r--r-- | sysdeps/i386/isnanl.c | 43 | ||||
-rw-r--r-- | sysdeps/i386/strsep.S | 3 | ||||
-rw-r--r-- | sysdeps/i386/strtok.S | 63 |
4 files changed, 9 insertions, 146 deletions
diff --git a/sysdeps/i386/isinfl.c b/sysdeps/i386/isinfl.c deleted file mode 100644 index 056d756d58..0000000000 --- a/sysdeps/i386/isinfl.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Check `long double' for Infinity. i386 FPU version. -Copyright (C) 1991, 1992, 1995 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 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. */ - -#include <math.h> -#include "ieee754.h" - -#undef __isinfl -#undef isinfl - - -/* Return 0 if VALUE is finite or NaN, +1 if it - is +Infinity, -1 if it is -Infinity. */ -int -__isinfl (long double value) -{ - union ieee854_long_double u; - - u.d = value; - - /* Intel's interpretation of the IEEE 854 standard defines Inf to - have the maximum possible exponent and the MSB of the mantissa - set. No further bit of the mantissa must be set. */ - if ((u.ieee.exponent & 0x7fff) == 0x7fff && - u.ieee.mantissa0 == 0x80000000 && u.ieee.mantissa1 == 0) - return u.ieee.negative ? -1 : 1; - - return 0; -} - -weak_alias (__isinfl, isinfl); diff --git a/sysdeps/i386/isnanl.c b/sysdeps/i386/isnanl.c deleted file mode 100644 index de10c07532..0000000000 --- a/sysdeps/i386/isnanl.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Check `long double' for Not A Number. i386 FPU version. -Copyright (C) 1991, 1992, 1995 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 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. */ - -#include <math.h> -#include "ieee754.h" - -#undef __isnanl -#undef isnanl - - -/* Return nonzero if VALUE is not a number. */ -int -__isnanl (long double value) -{ - union ieee854_long_double u; - - u.d = value; - - /* Intel's interpretation of the IEEE 854 standard defines NaN to - have the maximum possible exponent and the MSB and at least one - more bit of the mantissa set. */ - return ((u.ieee.exponent & 0x7fff) == 0x7fff - && ((u.ieee.mantissa0 & 0x80000000) != 0) - && ((u.ieee.mantissa0 & 0x7fffffff) != 0 || u.ieee.mantissa1 != 0)); -} - -weak_alias (__isnanl, isnanl); diff --git a/sysdeps/i386/strsep.S b/sysdeps/i386/strsep.S deleted file mode 100644 index 8c425dd505..0000000000 --- a/sysdeps/i386/strsep.S +++ /dev/null @@ -1,3 +0,0 @@ -#define FUNCTION strsep -#define USE_AS_STRSEP 1 -#include <sysdeps/i386/strtok.S> diff --git a/sysdeps/i386/strtok.S b/sysdeps/i386/strtok.S index 28845e08cf..2ef8803ef6 100644 --- a/sysdeps/i386/strtok.S +++ b/sysdeps/i386/strtok.S @@ -19,7 +19,6 @@ 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. */ -#include <errnos.h> #include <sysdep.h> /* This file can be used for three variants of the strtok function: @@ -35,14 +34,9 @@ Boston, MA 02111-1307, USA. */ delim (sp + 8) save_ptr (sp + 12) - strsep: - INPUT PARAMETERS - str_ptr (sp + 4) - delim (sp + 8) - We do a common implementation here. */ -#if !defined (USE_AS_STRTOK_R) && !defined (USE_AS_STRSEP) +#ifndef USE_AS_STRTOK_R .bss .local save_ptr ASM_TYPE_DIRECTIVE (save_ptr, @object) @@ -53,73 +47,40 @@ save_ptr: #define FUNCTION strtok #endif - /* We use the possibility to do some more initialization - for the strtok implementation. */ .text -Lillegal_argument: -#ifndef PIC - movl $EINVAL, C_SYMBOL_NAME(errno) - xorl %eax, %eax -#else -# if defined (USE_AS_STRTOK_R) || defined (USE_AS_STRSEP) - pushl %ebx /* Save PIC register. */ - call Lhere2 -Lhere2: popl %ebx - addl $_GLOBAL_OFFSET_TABLE_+[.-Lhere2], %ebx -# endif - movl errno@GOT(%ebx), %ebx - movl $EINVAL, (%ebx) - xorl %eax, %eax - popl %ebx -#endif - ret - ENTRY (FUNCTION) movl 4(%esp), %edx /* Get start of string. */ movl 8(%esp), %eax /* Get start of delimiter set. */ -#ifdef USE_AS_STRSEP - /* %EDX does not yet contain the string starting point. Only - a pointer to the location where it is stored. */ - movl (%edx), %edx -#else -# if !defined (USE_AS_STRTOK_R) && defined (PIC) +#if !defined (USE_AS_STRTOK_R) && defined (PIC) pushl %ebx /* Save PIC register. */ call Lhere Lhere: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-Lhere], %ebx -# endif +#endif /* If the pointer is NULL we have to use the stored value of the last run. */ cmpl $0, %edx jne L0 -# ifdef USE_AS_STRTOK_R +#ifdef USE_AS_STRTOK_R /* The value is stored in the third argument. */ movl 12(%esp), %edx movl (%edx), %edx -# else +#else /* The value is in the local variable defined above. But we have to take care for PIC code. */ -# ifndef PIC +# ifndef PIC movl save_ptr, %edx -# else +# else movl save_ptr@GOTOFF(%ebx), %edx -# endif # endif #endif - /* Compare whether pointer is NULL. We are tolerant here - because the C function do the same. */ - cmpl $0, %edx - je Lillegal_argument - -#ifndef USE_AS_STRSEP L0: -#endif /* First we create a table with flags for all possible characters. For the ASCII (7bit/8bit) or ISO-8859-X character sets which are supported by the C string functions we have 256 characters. @@ -224,8 +185,8 @@ L1: leal -4(%edx), %eax /* prepare loop */ 1. a character in the stopset was found and 2. the end of the string was found - But as a sign that the chracter is in the stopset we store its - value in the table. But the value of NUL is NUL so the loop + As a sign that the character is in the stopset we store its + value in the table. The value of NUL is NUL so the loop terminates for NUL in every case. */ L3: addl $4, %eax /* adjust pointer for full loop round */ @@ -295,9 +256,6 @@ L11: #ifdef USE_AS_STRTOK_R movl 12(%esp), %ecx movl %edx, (%ecx) -#elif USE_AS_STRSEP - movl 4(%esp), %ecx - movl %edx, (%ecx) #else # ifndef PIC movl %edx, save_ptr @@ -315,9 +273,6 @@ LreturnNULL: #ifdef USE_AS_STRTOK_R movl 12(%esp), %ecx movl %eax, (%ecx) -#elif USE_AS_STRSEP - movl 4(%esp), %ecx - movl %eax, (%ecx) #else # ifndef PIC movl %eax, save_ptr |