* sysdeps/i386/add_n.S: Add call frame information.

* sysdeps/i386/addmul_1.S: Likewise.
	* sysdeps/i386/bsd-setjmp.S: Likewise.
	* sysdeps/i386/lshift.S: Likewise.
	* sysdeps/i386/memchr.S: Likewise.
	* sysdeps/i386/memcmp.S: Likewise.
	* sysdeps/i386/mul_1.S: Likewise.
	* sysdeps/i386/rawmemchr.S: Likewise.
	* sysdeps/i386/rshift.S: Likewise.
	* sysdeps/i386/stpncpy.S: Likewise.
	* sysdeps/i386/strchr.S: Likewise.
	* sysdeps/i386/strchrnul.S: Likewise.
	* sysdeps/i386/strcspn.S: Likewise.
	* sysdeps/i386/strpbrk.S: Likewise.
	* sysdeps/i386/strrchr.S: Likewise.
	* sysdeps/i386/strspn.S: Likewise.
	* sysdeps/i386/strtok.S: Likewise.
	* sysdeps/i386/sub_n.S: Likewise.
	* sysdeps/i386/submul_1.S: Likewise.
	* sysdeps/i386/elf/bsd-setjmp.S: Likewise.
	* sysdeps/i386/i486/strcat.S: Likewise.
	* sysdeps/i386/i586/add_n.S: Likewise.
	* sysdeps/i386/i586/addmul_1.S: Likewise.
	* sysdeps/i386/i586/lshift.S: Likewise.
	* sysdeps/i386/i586/memcpy.S: Likewise.
	* sysdeps/i386/i586/memset.S: Likewise.
	* sysdeps/i386/i586/mul_1.S: Likewise.
	* sysdeps/i386/i586/rshift.S: Likewise.
	* sysdeps/i386/i586/strchr.S: Likewise.
	* sysdeps/i386/i586/strcpy.S: Likewise.
	* sysdeps/i386/i586/sub_n.S: Likewise.
	* sysdeps/i386/i586/submul_1.S: Likewise.
	* sysdeps/i386/i686/add_n.S: Likewise.
	* sysdeps/i386/i686/memcmp.S: Likewise.
	* sysdeps/i386/i686/memmove.S: Likewise.
	* sysdeps/i386/i686/mempcpy.S: Likewise.
	* sysdeps/i386/i686/memset.S: Likewise.
	* sysdeps/i386/i686/strtok.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/semtimedop.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise.

	* sysdeps/i386/fpu/libm-test-ulps: Adjust for gcc 4.
This commit is contained in:
Ulrich Drepper 2005-05-04 06:22:30 +00:00
parent 5085cd1fa1
commit 1ad9da69c6
48 changed files with 1000 additions and 152 deletions

View File

@ -1,5 +1,52 @@
2005-05-03 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/add_n.S: Add call frame information.
* sysdeps/i386/addmul_1.S: Likewise.
* sysdeps/i386/bsd-setjmp.S: Likewise.
* sysdeps/i386/lshift.S: Likewise.
* sysdeps/i386/memchr.S: Likewise.
* sysdeps/i386/memcmp.S: Likewise.
* sysdeps/i386/mul_1.S: Likewise.
* sysdeps/i386/rawmemchr.S: Likewise.
* sysdeps/i386/rshift.S: Likewise.
* sysdeps/i386/stpncpy.S: Likewise.
* sysdeps/i386/strchr.S: Likewise.
* sysdeps/i386/strchrnul.S: Likewise.
* sysdeps/i386/strcspn.S: Likewise.
* sysdeps/i386/strpbrk.S: Likewise.
* sysdeps/i386/strrchr.S: Likewise.
* sysdeps/i386/strspn.S: Likewise.
* sysdeps/i386/strtok.S: Likewise.
* sysdeps/i386/sub_n.S: Likewise.
* sysdeps/i386/submul_1.S: Likewise.
* sysdeps/i386/elf/bsd-setjmp.S: Likewise.
* sysdeps/i386/i486/strcat.S: Likewise.
* sysdeps/i386/i586/add_n.S: Likewise.
* sysdeps/i386/i586/addmul_1.S: Likewise.
* sysdeps/i386/i586/lshift.S: Likewise.
* sysdeps/i386/i586/memcpy.S: Likewise.
* sysdeps/i386/i586/memset.S: Likewise.
* sysdeps/i386/i586/mul_1.S: Likewise.
* sysdeps/i386/i586/rshift.S: Likewise.
* sysdeps/i386/i586/strchr.S: Likewise.
* sysdeps/i386/i586/strcpy.S: Likewise.
* sysdeps/i386/i586/sub_n.S: Likewise.
* sysdeps/i386/i586/submul_1.S: Likewise.
* sysdeps/i386/i686/add_n.S: Likewise.
* sysdeps/i386/i686/memcmp.S: Likewise.
* sysdeps/i386/i686/memmove.S: Likewise.
* sysdeps/i386/i686/mempcpy.S: Likewise.
* sysdeps/i386/i686/memset.S: Likewise.
* sysdeps/i386/i686/strtok.S: Likewise.
* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
* sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Likewise.
* sysdeps/unix/sysv/linux/i386/semtimedop.S: Likewise.
* sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise.
* sysdeps/i386/fpu/libm-test-ulps: Adjust for gcc 4.
* sysdeps/unix/sysv/linux/kernel-features.h: waitid is available
on ppc in 2.6.12.

View File

@ -1,3 +1,8 @@
2005-05-03 Ulrich Drepper <drepper@redhat.com>
[BZ #915]
* sysdeps/pthread/pthread.h: Avoid empty initializers.
2005-05-03 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Remove explicit

View File

@ -62,7 +62,7 @@ enum
/* Mutex initializers. */
#define PTHREAD_MUTEX_INITIALIZER \
{ }
{ { 0, } }
#ifdef __USE_GNU
# if __WORDSIZE == 64
# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \
@ -94,7 +94,7 @@ enum
/* Read-write lock initializers. */
# define PTHREAD_RWLOCK_INITIALIZER \
{ }
{ { 0, } }
# ifdef __USE_GNU
# if __WORDSIZE == 64
# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \
@ -140,7 +140,7 @@ enum
/* Conditional variable handling. */
#define PTHREAD_COND_INITIALIZER { }
#define PTHREAD_COND_INITIALIZER { { 0, } }
/* Cleanup buffers */

View File

@ -1,6 +1,6 @@
/* Add two limb vectors of the same length > 0 and store sum in a third
limb vector.
Copyright (C) 1992, 94, 95, 97, 98, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,94,95,97,98,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -34,10 +34,14 @@ ENTRY (BP_SYM (__mpn_add_n))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 4)
movl S1(%esp),%esi
cfi_rel_offset (esi, 0)
movl S2(%esp),%edx
movl SIZE(%esp),%ecx
#if __BOUNDED_POINTERS__
@ -62,10 +66,12 @@ ENTRY (BP_SYM (__mpn_add_n))
/* Calculate start address in loop for PIC. Due to limitations in some
assemblers, Loop-L0-3 cannot be put into the leal */
call L(0)
cfi_adjust_cfa_offset (4)
L(0): leal (%eax,%eax,8),%eax
addl (%esp),%eax
addl $(L(oop)-L(0)-3),%eax
addl $4,%esp
cfi_adjust_cfa_offset (-4)
#else
/* Calculate start address in loop for non-PIC. */
leal (L(oop) - 3)(%eax,%eax,8),%eax
@ -106,7 +112,11 @@ L(oop): movl (%esi),%eax
negl %eax
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* i80386 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
the result to a second limb vector.
Copyright (C) 1992, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,1994,1997,1998,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -39,14 +39,21 @@ ENTRY (BP_SYM (__mpn_addmul_1))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %sizeP
movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %sizeP /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %sizeP)
@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_addmul_1))
leal (%s1_ptr,%sizeP,4), %s1_ptr
negl %sizeP
xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop):
movl (%s1_ptr,%sizeP,4), %eax
@ -72,9 +80,17 @@ L(oop):
movl %ebp, %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,5 +1,5 @@
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version.
Copyright (C) 1994,1995,1996,1997,2000,2001 Free Software Foundation, Inc.
Copyright (C) 1994-1997,2000,2001,2005 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
@ -50,9 +50,13 @@ ENTRY (BP_SYM (setjmp))
/* Call __sigjmp_save. */
pushl $1
cfi_adjust_cfa_offset (4)
pushl 8(%esp)
cfi_adjust_cfa_offset (4)
call BP_SYM (__sigjmp_save)
popl %ecx
cfi_adjust_cfa_offset (-4)
popl %edx
cfi_adjust_cfa_offset (-4)
ret
END (BP_SYM (setjmp))

View File

@ -1,5 +1,5 @@
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version.
Copyright (C) 1995-1997,2000,2001,2002,2003 Free Software Foundation, Inc.
Copyright (C) 1995-1997,2000-2003,2005 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
@ -50,7 +50,9 @@ ENTRY (BP_SYM (setjmp))
/* Call __sigjmp_save. */
pushl $1
cfi_adjust_cfa_offset (4)
pushl 8(%esp)
cfi_adjust_cfa_offset (4)
#ifdef PIC
/* We cannot use the PLT, because it requires that %ebx be set, but
we can't save and restore our caller's value. Instead, we do an
@ -64,7 +66,9 @@ ENTRY (BP_SYM (setjmp))
call BP_SYM (__sigjmp_save)
#endif
popl %ecx
cfi_adjust_cfa_offset (-4)
popl %edx
cfi_adjust_cfa_offset (-4)
ret
END (BP_SYM (setjmp))

View File

@ -7,20 +7,20 @@ ldouble: 1
# asin
Test "asin (-0.5) == -pi/6":
ldouble: 1
ildouble: 1
ldouble: 1
Test "asin (-1.0) == -pi/2":
ldouble: 1
ildouble: 1
ldouble: 1
Test "asin (0.5) == pi/6":
ldouble: 1
ildouble: 1
ldouble: 1
Test "asin (0.75) == 0.848062078981481008052944338998418080":
ldouble: 1
ildouble: 1
ldouble: 1
Test "asin (1.0) == pi/2":
ldouble: 1
ildouble: 1
ldouble: 1
# atanh
Test "atanh (0.75) == 0.972955074527656652552676371721589865":
@ -44,11 +44,11 @@ ildouble: 6
ldouble: 6
Test "Imaginary part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
double: 1
float: 4
idouble: 1
ifloat: 4
ildouble: 1
ldouble: 1
ifloat: 4
float: 4
Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i":
ildouble: 1
ldouble: 1
@ -473,24 +473,26 @@ float: 1
# j0
Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
float: 1
float: 2
idouble: 1
ifloat: 1
ifloat: 2
ildouble: 1
ldouble: 1
Test "j0 (10.0) == -0.245935764451348335197760862485328754":
double: 3
float: 1
idouble: 3
ifloat: 1
Test "j0 (2.0) == 0.223890779141235668051827454649948626":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "j0 (2.0) == 0.223890779141235668051827454649948626":
float: 1
ifloat: 1
Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
float: 1
float: 2
idouble: 1
ifloat: 1
ifloat: 2
ildouble: 1
ldouble: 1
Test "j0 (8.0) == 0.171650807137553906090869407851972001":
@ -498,22 +500,21 @@ float: 1
ifloat: 1
# j1
Test "j1 (0.75) == 0.349243602174862192523281016426251335":
double: 1
idouble: 1
Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
float: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "j1 (0.75) == 0.349243602174862192523281016426251335":
double: 1
idouble: 1
Test "j1 (2.0) == 0.576724807756873387202448242269137087":
double: 1
idouble: 1
Test "j1 (0.75) == 0.349243602174862192523281016426251335":
double: 1
idouble: 1
Test "j1 (8.0) == 0.234636346853914624381276651590454612":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
@ -521,24 +522,26 @@ ldouble: 1
# jn
Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
float: 1
float: 2
idouble: 1
ifloat: 1
ifloat: 2
ildouble: 1
ldouble: 1
Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
double: 3
float: 1
idouble: 3
ifloat: 1
Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
float: 1
ifloat: 1
Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
double: 1
float: 1
float: 2
idouble: 1
ifloat: 1
ifloat: 2
ildouble: 1
ldouble: 1
Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
@ -556,22 +559,24 @@ Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
double: 1
idouble: 1
Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
ifloat: 1
float: 1
Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
float: 1
ifloat: 1
double: 1
float: 1
idouble: 1
ifloat: 1
Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
float: 1
ifloat: 1
@ -579,46 +584,46 @@ ildouble: 2
ldouble: 2
Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
ifloat: 1
float: 1
Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
double: 2
double: 5
float: 2
idouble: 2
idouble: 5
ifloat: 2
ildouble: 2
ldouble: 2
Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
double: 2
idouble: 2
ildouble: 1
ldouble: 1
idouble: 2
double: 2
Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083":
ildouble: 1
ldouble: 1
Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
float: 1
ifloat: 1
double: 1
float: 1
idouble: 1
ifloat: 1
Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083":
ildouble: 1
ldouble: 1
Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
double: 1
double: 5
float: 2
idouble: 1
idouble: 5
ifloat: 2
ildouble: 1
ldouble: 1
Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
ildouble: 1
ldouble: 1
double: 1
idouble: 1
ildouble: 1
ldouble: 1
# lgamma
Test "lgamma (-0.5) == log(2*sqrt(pi))":
@ -627,10 +632,10 @@ idouble: 1
ildouble: 1
ldouble: 1
Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
float: 1
ifloat: 1
double: 1
float: 1
idouble: 1
ifloat: 1
Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
double: 1
float: 2
@ -714,32 +719,39 @@ float: 1
idouble: 1
ifloat: 1
Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
ildouble: 1
ldouble: 1
ifloat: 1
float: 1
double: 2
float: 1
idouble: 2
Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
float: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "y0 (8.0) == 0.223521489387566220527323400498620359":
float: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "y0 (1.5) == 0.382448923797758843955068554978089862":
float: 1
ifloat: 1
double: 1
float: 1
idouble: 1
ifloat: 1
Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "y0 (8.0) == 0.223521489387566220527323400498620359":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
# y1
Test "y1 (0.125) == -5.19993611253477499595928744876579921":
ildouble: 1
ldouble: 1
Test "y1 (1.0) == -0.781212821300288716547150000047964821":
double: 1
idouble: 1
Test "y1 (10.0) == 0.249015424206953883923283474663222803":
double: 2
float: 2
@ -753,13 +765,12 @@ ifloat: 2
ildouble: 1
ldouble: 1
Test "y1 (8.0) == -0.158060461731247494255555266187483550":
double: 1
float: 2
idouble: 1
ifloat: 2
ildouble: 1
ldouble: 1
Test "y1 (1.0) == -0.781212821300288716547150000047964821":
double: 1
idouble: 1
# yn
Test "yn (0, 0.125) == -1.38968062514384052915582277745018693":
@ -771,24 +782,28 @@ float: 1
idouble: 1
ifloat: 1
Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 1
ldouble: 1
ifloat: 1
float: 1
double: 2
idouble: 2
Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
ifloat: 1
float: 1
double: 1
idouble: 1
Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
float: 1
idouble: 1
ifloat: 1
Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
@ -796,8 +811,8 @@ Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
ildouble: 1
ldouble: 1
Test "yn (1, 1.0) == -0.781212821300288716547150000047964821":
idouble: 1
double: 1
idouble: 1
Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
double: 2
float: 2
@ -811,13 +826,12 @@ ifloat: 2
ildouble: 1
ldouble: 1
Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
double: 1
float: 2
idouble: 1
ifloat: 2
ildouble: 1
ldouble: 1
Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
ifloat: 1
float: 1
Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
double: 1
float: 1
@ -841,10 +855,10 @@ float: 3
idouble: 1
ifloat: 3
Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
float: 3
ifloat: 3
double: 2
float: 3
idouble: 2
ifloat: 3
Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
ildouble: 1
ldouble: 1
@ -855,16 +869,16 @@ idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
float: 1
ifloat: 1
double: 1
idouble: 1
Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
double: 1
float: 1
idouble: 1
ifloat: 1
# Maximal error of functions:
Function: "acos":
@ -872,8 +886,8 @@ ildouble: 622
ldouble: 622
Function: "asin":
ldouble: 1
ildouble: 1
ldouble: 1
Function: "atanh":
ildouble: 2
@ -895,11 +909,11 @@ ldouble: 6
Function: Imaginary part of "cacosh":
double: 1
float: 4
idouble: 1
ifloat: 4
ildouble: 1
ldouble: 1
ifloat: 4
float: 4
Function: Real part of "casin":
double: 1
@ -1115,10 +1129,10 @@ Function: "hypot":
float: 1
Function: "j0":
double: 1
float: 1
idouble: 1
ifloat: 1
double: 3
float: 2
idouble: 3
ifloat: 2
ildouble: 1
ldouble: 1
@ -1131,9 +1145,9 @@ ildouble: 1
ldouble: 1
Function: "jn":
double: 2
double: 5
float: 2
idouble: 2
idouble: 5
ifloat: 2
ildouble: 2
ldouble: 2

View File

@ -1,6 +1,6 @@
/* strcat(dest, src) -- Append SRC on the end of DEST.
For Intel 80x86, x>=4.
Copyright (C) 1994,1995,1996,1997,2000,2003 Free Software Foundation, Inc.
Copyright (C) 1994-1997,2000,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>.
Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -35,6 +35,7 @@ ENTRY (BP_SYM (strcat))
ENTER
pushl %edi /* Save callee-safe register. */
cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edx
movl SRC(%esp), %ecx
@ -66,6 +67,7 @@ ENTRY (BP_SYM (strcat))
/* Now we are aligned. Begin scan loop. */
jmp L(1)
cfi_rel_offset (edi, 0)
ALIGN(4)
L(4): addl $16,%edx /* increment destination pointer for round */
@ -263,6 +265,8 @@ L(8): /* GKM FIXME: check high bounds */
movl DEST(%esp), %eax /* start address of destination is result */
RETURN_BOUNDED_POINTER (DEST(%esp))
popl %edi /* restore saved register */
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,6 +1,6 @@
/* Pentium __mpn_add_n -- Add two limb vectors of the same length > 0 and store
sum in a third limb vector.
Copyright (C) 1992, 94, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,94,95,96,97,98,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -34,13 +34,20 @@ ENTRY (BP_SYM (__mpn_add_n))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 12)
movl S1(%esp),%esi
cfi_rel_offset (esi, 8)
movl S2(%esp),%ebx
cfi_rel_offset (ebx, 0)
movl SIZE(%esp),%ecx
#if __BOUNDED_POINTERS__
shll $2, %ecx /* convert limbs to bytes */
@ -50,6 +57,7 @@ ENTRY (BP_SYM (__mpn_add_n))
shrl $2, %ecx
#endif
movl (%ebx),%ebp
cfi_rel_offset (ebp, 4)
decl %ecx
movl %ecx,%edx
@ -58,6 +66,7 @@ ENTRY (BP_SYM (__mpn_add_n))
testl %ecx,%ecx /* zero carry flag */
jz L(end)
pushl %edx
cfi_adjust_cfa_offset (4)
ALIGN (3)
L(oop): movl 28(%edi),%eax /* fetch destination cache line */
@ -105,6 +114,7 @@ L(4): movl 24(%esi),%eax
jnz L(oop)
popl %edx
cfi_adjust_cfa_offset (-4)
L(end):
decl %edx /* test %edx w/o clobbering carry */
js L(end2)
@ -128,9 +138,17 @@ L(end2):
negl %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* Pentium __mpn_addmul_1 -- Multiply a limb vector with a limb and add
the result to a second limb vector.
Copyright (C) 1992, 94, 96, 97, 98, 00 Free Software Foundation, Inc.
Copyright (C) 1992, 94, 96, 97, 98, 00, 2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -39,14 +39,21 @@ ENTRY (BP_SYM (__mpn_addmul_1))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %size
movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %size /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %size)
@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_addmul_1))
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop): adcl $0, %ebp
@ -79,9 +87,17 @@ L(oop): adcl $0, %ebp
adcl $0, %ebp
movl %ebp, %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,5 +1,5 @@
/* Pentium optimized __mpn_lshift --
Copyright (C) 1992, 94, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,94,95,96,97,98,2000,2005 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
@ -33,13 +33,21 @@ ENTRY (BP_SYM (__mpn_lshift))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebp, 0)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 12)
movl S(%esp),%esi
cfi_rel_offset (esi, 8)
movl SIZE(%esp),%ebx
cfi_rel_offset (ebx, 0)
movl CNT(%esp),%ecx
#if __BOUNDED_POINTERS__
shll $2, %ebx /* convert limbs to bytes */
@ -67,9 +75,11 @@ L(normal):
xorl %eax,%eax
shldl %cl,%edx,%eax /* compute carry limb */
pushl %eax /* push carry limb onto stack */
cfi_adjust_cfa_offset (4)
decl %ebx
pushl %ebx
cfi_adjust_cfa_offset (4)
shrl $3,%ebx
jz L(end)
@ -113,6 +123,7 @@ L(oop): movl -28(%edi),%eax /* fetch destination cache line */
jnz L(oop)
L(end): popl %ebx
cfi_adjust_cfa_offset (-4)
andl $7,%ebx
jz L(end2)
L(oop2):
@ -130,11 +141,20 @@ L(end2):
movl %edx,(%edi) /* store it */
popl %eax /* pop carry limb */
cfi_adjust_cfa_offset (-4)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret
@ -144,12 +164,18 @@ L(end2):
function is documented to work for overlapping source and destination.
*/
cfi_adjust_cfa_offset (16)
cfi_rel_offset (edi, 12)
cfi_rel_offset (esi, 8)
cfi_rel_offset (ebp, 4)
cfi_rel_offset (ebx, 0)
L(special):
movl (%esi),%edx
addl $4,%esi
decl %ebx
pushl %ebx
cfi_adjust_cfa_offset (4)
shrl $3,%ebx
addl %edx,%edx
@ -199,6 +225,7 @@ L(Loop):
L(Lend):
popl %ebx
cfi_adjust_cfa_offset (-4)
sbbl %eax,%eax /* save carry in %eax */
andl $7,%ebx
jz L(Lend2)
@ -223,9 +250,17 @@ L(L1): movl %edx,(%edi) /* store last limb */
negl %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,5 +1,5 @@
/* Highly optimized version for i586.
Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1997, 2000, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -39,10 +39,14 @@ ENTRY (BP_SYM (memcpy))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edi
cfi_rel_offset (edi, 4)
movl SRC(%esp), %esi
cfi_rel_offset (esi, 4)
movl LEN(%esp), %ecx
CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %ecx)
CHECK_BOUNDS_BOTH_WIDE (%esi, SRC(%esp), %ecx)
@ -111,7 +115,11 @@ L(1): rep; movsb
#endif
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,6 +1,6 @@
/* memset/bzero -- set memory area to CH/0
Highly optimized version for ix86, x>=5.
Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 2000, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund, <tege@matematik.su.se>
@ -42,8 +42,10 @@ ENTRY (BP_SYM (memset))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edi
cfi_rel_offset (edi, 0)
movl LEN(%esp), %edx
CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %edx)
#if BZERO_P
@ -106,6 +108,8 @@ L(2): shrl $2, %ecx /* convert byte count to longword count */
RETURN_BOUNDED_POINTER (DEST(%esp))
#endif
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
#if BZERO_P

View File

@ -1,6 +1,6 @@
/* Pentium __mpn_mul_1 -- Multiply a limb vector with a limb and store
the result in a second limb vector.
Copyright (C) 1992, 94, 96, 97, 98, 00 Free Software Foundation, Inc.
Copyright (C) 1992, 94, 96, 97, 98, 00, 2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -39,14 +39,21 @@ ENTRY (BP_SYM (__mpn_mul_1))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %size
movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %size /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %size)
@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_mul_1))
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop): adcl $0, %ebp
@ -75,9 +83,17 @@ L(oop): adcl $0, %ebp
adcl $0, %ebp
movl %ebp, %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,5 +1,5 @@
/* Pentium optimized __mpn_rshift --
Copyright (C) 1992, 94, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,94,95,96,97,98,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -33,13 +33,21 @@ ENTRY (BP_SYM (__mpn_rshift))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebp, 0)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 12)
movl S(%esp),%esi
cfi_rel_offset (esi, 8)
movl SIZE(%esp),%ebx
cfi_rel_offset (ebx, 0)
movl CNT(%esp),%ecx
#if __BOUNDED_POINTERS__
shll $2, %ebx /* convert limbs to bytes */
@ -64,9 +72,11 @@ L(normal):
xorl %eax,%eax
shrdl %cl,%edx,%eax /* compute carry limb */
pushl %eax /* push carry limb onto stack */
cfi_adjust_cfa_offset (4)
decl %ebx
pushl %ebx
cfi_adjust_cfa_offset (4)
shrl $3,%ebx
jz L(end)
@ -110,6 +120,7 @@ L(oop): movl 28(%edi),%eax /* fetch destination cache line */
jnz L(oop)
L(end): popl %ebx
cfi_adjust_cfa_offset (-4)
andl $7,%ebx
jz L(end2)
L(oop2):
@ -127,11 +138,20 @@ L(end2):
movl %edx,(%edi) /* store it */
popl %eax /* pop carry limb */
cfi_adjust_cfa_offset (-4)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret
@ -141,6 +161,11 @@ L(end2):
function is documented to work for overlapping source and destination.
*/
cfi_adjust_cfa_offset (16)
cfi_rel_offset (edi, 12)
cfi_rel_offset (esi, 8)
cfi_rel_offset (ebp, 4)
cfi_rel_offset (ebx, 3)
L(special):
leal -4(%edi,%ebx,4),%edi
leal -4(%esi,%ebx,4),%esi
@ -150,6 +175,7 @@ L(special):
decl %ebx
pushl %ebx
cfi_adjust_cfa_offset (4)
shrl $3,%ebx
shrl $1,%edx
@ -199,6 +225,7 @@ L(Loop):
L(Lend):
popl %ebx
cfi_adjust_cfa_offset (-4)
sbbl %eax,%eax /* save carry in %eax */
andl $7,%ebx
jz L(Lend2)
@ -223,9 +250,17 @@ L(L1): movl %edx,(%edi) /* store last limb */
rcrl $1,%eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* Find character CH in a NUL terminated string.
Highly optimized version for ix85, x>=5.
Copyright (C) 1995, 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1995,1996,1997,2000,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
@ -47,16 +47,21 @@ ENTRY (BP_SYM (strchr))
ENTER
pushl %edi /* Save callee-safe registers. */
cfi_adjust_cfa_offset (-4)
pushl %esi
cfi_adjust_cfa_offset (-4)
pushl %ebx
cfi_adjust_cfa_offset (-4)
pushl %ebp
cfi_adjust_cfa_offset (-4)
movl STR(%esp), %eax
movl CHR(%esp), %edx
CHECK_BOUNDS_LOW (%eax, STR(%esp))
movl %eax, %edi /* duplicate string pointer for later */
cfi_rel_offset (edi, 12)
xorl %ecx, %ecx /* clear %ecx */
/* At the moment %edx contains C. What we need for the
@ -107,6 +112,10 @@ L(0): movb (%eax), %cl /* load single byte */
incl %eax /* increment pointer */
cfi_rel_offset (esi, 8)
cfi_rel_offset (ebx, 4)
cfi_rel_offset (ebp, 0)
/* The following code is the preparation for the loop. The
four instruction up to `L1' will not be executed in the loop
because the same code is found at the end of the loop, but
@ -283,15 +292,28 @@ L(5): subl $4, %eax /* adjust pointer */
L(2): CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
RETURN_BOUNDED_POINTER (STR(%esp))
popl %ebp /* restore saved registers */
L(out): popl %ebp /* restore saved registers */
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR
cfi_adjust_cfa_offset (16)
cfi_rel_offset (edi, 12)
cfi_rel_offset (esi, 8)
cfi_rel_offset (ebx, 4)
cfi_rel_offset (ebp, 0)
/* We know there is a NUL byte in the word. But we have to test
whether there is an C byte before it in the word. */
L(4): subl $4, %eax /* adjust pointer */
@ -327,14 +349,7 @@ L(4): subl $4, %eax /* adjust pointer */
L(3): xorl %eax, %eax
RETURN_NULL_BOUNDED_POINTER
popl %ebp /* restore saved registers */
popl %ebx
popl %esi
popl %edi
LEAVE
RET_PTR
jmp L(out)
END (BP_SYM (strchr))
#undef index

View File

@ -1,5 +1,5 @@
/* strcpy/stpcpy implementation for i586.
Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1997, 2000, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -39,11 +39,16 @@ ENTRY (BP_SYM (STRCPY))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edi
cfi_rel_offset (edi, 8)
movl SRC(%esp), %esi
cfi_rel_offset (esi, 4)
CHECK_BOUNDS_LOW (%edi, DEST(%esp))
CHECK_BOUNDS_LOW (%esi, SRC(%esp))
@ -51,11 +56,14 @@ ENTRY (BP_SYM (STRCPY))
leal -1(%esi), %ecx
movl $magic, %ebx
cfi_rel_offset (ebx, 0)
andl $3, %ecx
#ifdef PIC
call 2f
cfi_adjust_cfa_offset (4)
2: popl %edx
cfi_adjust_cfa_offset (-4)
/* 0xb is the distance between 2: and 1: but we avoid writing
1f-2b because the assembler generates worse code. */
leal 0xb(%edx,%ecx,8), %ecx
@ -153,8 +161,14 @@ L(end2):
#endif
RETURN_BOUNDED_POINTER (DEST(%esp))
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,6 +1,6 @@
/* Pentium __mpn_sub_n -- Subtract two limb vectors of the same length > 0
and store difference in a third limb vector.
Copyright (C) 1992, 94, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,94,95,96,97,98,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -34,13 +34,20 @@ ENTRY (BP_SYM (__mpn_sub_n))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 12)
movl S1(%esp),%esi
cfi_rel_offset (esi, 8)
movl S2(%esp),%ebx
cfi_rel_offset (ebx, 0)
movl SIZE(%esp),%ecx
#if __BOUNDED_POINTERS__
shll $2, %ecx /* convert limbs to bytes */
@ -49,6 +56,7 @@ ENTRY (BP_SYM (__mpn_sub_n))
CHECK_BOUNDS_BOTH_WIDE (%ebx, S2(%esp), %ecx)
shrl $2, %ecx
#endif
cfi_rel_offset (ebp, 4)
movl (%ebx),%ebp
decl %ecx
@ -58,6 +66,7 @@ ENTRY (BP_SYM (__mpn_sub_n))
testl %ecx,%ecx /* zero carry flag */
jz L(end)
pushl %edx
cfi_adjust_cfa_offset (4)
ALIGN (3)
L(oop): movl 28(%edi),%eax /* fetch destination cache line */
@ -105,6 +114,7 @@ L(4): movl 24(%esi),%eax
jnz L(oop)
popl %edx
cfi_adjust_cfa_offset (-4)
L(end):
decl %edx /* test %edx w/o clobbering carry */
js L(end2)
@ -128,9 +138,17 @@ L(end2):
negl %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* Pentium __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
the result from a second limb vector.
Copyright (C) 1992, 94, 96, 97, 98, 00 Free Software Foundation, Inc.
Copyright (C) 1992, 94, 96, 97, 98, 00, 2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -39,14 +39,21 @@ ENTRY (BP_SYM (__mpn_submul_1))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %size
movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %sizeP /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %sizeP)
@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_submul_1))
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop): adcl $0, %ebp
@ -79,9 +87,17 @@ L(oop): adcl $0, %ebp
adcl $0, %ebp
movl %ebp, %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* Add two limb vectors of the same length > 0 and store sum in a third
limb vector.
Copyright (C) 1992, 94, 95, 97, 98, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,94,95,97,98,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -38,10 +38,14 @@ ENTRY (BP_SYM (__mpn_add_n))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 4)
movl S1(%esp),%esi
cfi_rel_offset (esi, 0)
movl S2(%esp),%edx
movl SIZE(%esp),%ecx
#if __BOUNDED_POINTERS__
@ -107,7 +111,11 @@ L(oop): movl (%esi),%eax
negl %eax
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -26,8 +26,10 @@
#define BLK1 PARMS
#define BLK2 BLK1+PTR_SIZE
#define LEN BLK2+PTR_SIZE
#define ENTRANCE pushl %ebx; ENTER
#define RETURN popl %ebx; LEAVE; ret
#define ENTRANCE pushl %ebx; cfi_adjust_cfa_offset (4); \
cfi_rel_offset (ebx, 0); ENTER
#define RETURN popl %ebx; cfi_adjust_cfa_offset (-4); \
cfi_restore (ebx); LEAVE; ret
/* Load an entry in a jump table into EBX. TABLE is a jump table
with relative offsets. INDEX is a register contains the index
@ -81,7 +83,9 @@ L(not_1):
jl L(bye) /* LEN == 0 */
pushl %esi
cfi_adjust_cfa_offset (4)
movl %eax, %esi
cfi_rel_offset (esi, 0)
cmpl $32, %ecx;
jge L(32bytesormore) /* LEN => 32 */
@ -128,9 +132,13 @@ L(4bytes):
jne L(find_diff)
L(0bytes):
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
xorl %eax, %eax
RETURN
cfi_adjust_cfa_offset (4)
cfi_rel_offset (esi, 0)
L(29bytes):
movl -29(%esi), %eax
movl -29(%edx), %ecx
@ -171,9 +179,13 @@ L(1bytes):
cmpb -1(%edx), %al
jne L(set)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
xorl %eax, %eax
RETURN
cfi_adjust_cfa_offset (4)
cfi_rel_offset (esi, 0)
L(30bytes):
movl -30(%esi), %eax
movl -30(%edx), %ecx
@ -217,9 +229,13 @@ L(2bytes):
cmpl %ecx, %eax
jne L(set)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
xorl %eax, %eax
RETURN
cfi_adjust_cfa_offset (4)
cfi_rel_offset (esi, 0)
L(31bytes):
movl -31(%esi), %eax
movl -31(%edx), %ecx
@ -266,9 +282,13 @@ L(3bytes):
cmpb -1(%edx), %al
jne L(set)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
xorl %eax, %eax
RETURN
cfi_adjust_cfa_offset (4)
cfi_rel_offset (esi, 0)
ALIGN (4)
/* ECX >= 32. */
L(32bytesormore):
@ -349,6 +369,8 @@ L(set):
sbbl %eax, %eax
sbbl $-1, %eax
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
RETURN
END (BP_SYM (memcmp))

View File

@ -1,7 +1,7 @@
/* Copy memory block and return pointer to beginning of destination block
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2003.
The GNU C Library is free software; you can redistribute it and/or
@ -42,11 +42,14 @@ ENTRY (BP_SYM (memmove))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
movl LEN(%esp), %ecx
movl DEST(%esp), %edi
cfi_rel_offset (edi, 0)
movl %esi, %edx
movl SRC(%esp), %esi
cfi_register (esi, edx)
CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %ecx)
CHECK_BOUNDS_BOTH_WIDE (%esi, SRC(%esp), %ecx)
@ -65,10 +68,13 @@ ENTRY (BP_SYM (memmove))
2: rep
movsl
movl %edx, %esi
cfi_restore (esi)
movl DEST(%esp), %eax
RETURN_BOUNDED_POINTER (DEST(%esp))
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR
@ -90,11 +96,14 @@ ENTRY (BP_SYM (memmove))
rep
movsl
movl %edx, %esi
cfi_restore (esi)
movl DEST(%esp), %eax
RETURN_BOUNDED_POINTER (DEST(%esp))
cld
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,7 +1,7 @@
/* Copy memory block and return pointer to following byte.
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
Copyright (C) 1998,1999,2000,2002,2004,2005 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
@ -43,9 +43,11 @@ ENTRY (BP_SYM (__mempcpy))
movl LEN(%esp), %ecx
movl %edi, %eax
cfi_register (edi, eax)
movl DEST(%esp), %edi
CHECK_BOUNDS_BOTH_WIDE (%edi, DEST(%esp), %ecx)
movl %esi, %edx
cfi_register (esi, edx)
movl SRC(%esp), %esi
CHECK_BOUNDS_BOTH_WIDE (%esi, SRC(%esp), %ecx)
cld
@ -58,7 +60,9 @@ ENTRY (BP_SYM (__mempcpy))
2: rep
movsl
xchgl %edi, %eax
cfi_restore (edi)
movl %edx, %esi
cfi_restore (esi)
RETURN_BOUNDED_POINTER (DEST(%esp))
LEAVE

View File

@ -51,6 +51,7 @@ ENTRY (BP_SYM (memset))
cld
pushl %edi
cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edx
movl LEN(%esp), %ecx
CHECK_BOUNDS_BOTH_WIDE (%edx, DEST(%esp), %ecx)
@ -61,6 +62,7 @@ ENTRY (BP_SYM (memset))
#endif
jecxz 1f
movl %edx, %edi
cfi_rel_offset (edi, 0)
andl $3, %edx
jz 2f
jnp 3f
@ -92,6 +94,8 @@ ENTRY (BP_SYM (memset))
RETURN_BOUNDED_POINTER (DEST(%esp))
#endif
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
#if BZERO_P

View File

@ -1,6 +1,6 @@
/* strtok (str, delim) -- Return next DELIM separated token from STR.
For Intel 80686.
Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1998, 2000, 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -86,6 +86,8 @@ ENTRY (BP_SYM (FUNCTION))
#if !defined USE_AS_STRTOK_R && defined PIC
pushl %ebx /* Save PIC register. */
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebx, 0)
call 0b
addl $_GLOBAL_OFFSET_TABLE_, %ebx
#endif
@ -97,6 +99,7 @@ ENTRY (BP_SYM (FUNCTION))
table. */
movl %edi, %edx
subl $256, %esp
cfi_adjust_cfa_offset (256)
movl $64, %ecx
movl %esp, %edi
xorl %eax, %eax
@ -257,8 +260,11 @@ L(8): cmpl %eax, %edx
L(epilogue):
/* Remove the stopset table. */
addl $256, %esp
cfi_adjust_cfa_offset (-256)
#if !defined USE_AS_STRTOK_R && defined PIC
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
#endif
LEAVE
RET_PTR

View File

@ -1,5 +1,5 @@
/* i80386 __mpn_lshift --
Copyright (C) 1992, 1994, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1992, 1994, 1997-2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -33,11 +33,16 @@ ENTRY (BP_SYM (__mpn_lshift))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 8)
movl S(%esp),%esi
cfi_rel_offset (esi, 4)
movl SIZE(%esp),%edx
movl CNT(%esp),%ecx
#if __BOUNDED_POINTERS__
@ -49,11 +54,13 @@ ENTRY (BP_SYM (__mpn_lshift))
subl $4,%esi /* adjust s_ptr */
movl (%esi,%edx,4),%ebx /* read most significant limb */
cfi_rel_offset (ebx, 0)
xorl %eax,%eax
shldl %cl,%ebx,%eax /* compute carry limb */
decl %edx
jz L(end)
pushl %eax /* push carry limb onto stack */
cfi_adjust_cfa_offset (4)
testb $1,%dl
jnz L(1) /* enter loop in the middle */
movl %ebx,%eax
@ -73,10 +80,17 @@ L(1): movl (%esi,%edx,4),%eax
movl %eax,(%edi) /* store it */
popl %eax /* pop carry limb */
cfi_adjust_cfa_offset (-4)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret
@ -85,8 +99,14 @@ L(end): shll %cl,%ebx /* compute least significant limb */
movl %ebx,(%edi) /* store it */
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,7 +1,6 @@
/* memchr (str, chr, len) -- Return pointer to first occurrence of CHR in STR less
than LEN.
For Intel 80x86, x>=3.
Copyright (C) 1994-1998, 2000, 2003 Free Software Foundation, Inc.
/* memchr (str, chr, len) -- Return pointer to first occurrence of CHR in STR
less than LEN. For Intel 80x86, x>=3.
Copyright (C) 1994-1998, 2000, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -45,12 +44,16 @@ ENTRY (BP_SYM (__memchr))
/* Save callee-safe registers used in this function. */
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
/* Load parameters into registers. */
movl STR(%esp), %eax /* str: pointer to memory block. */
movl CHR(%esp), %edx /* c: byte we are looking for. */
movl LEN(%esp), %esi /* len: length of memory block. */
cfi_rel_offset (esi, 4)
CHECK_BOUNDS_LOW (%eax, STR(%esp))
/* If my must not test more than three characters test
@ -320,7 +323,11 @@ L(9):
RETURN_BOUNDED_POINTER (STR(%esp))
#endif
L(pop): popl %edi /* pop saved registers */
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
LEAVE
RET_PTR

View File

@ -1,5 +1,5 @@
/* Compare two memory blocks for differences in the first COUNT bytes.
Copyright (C) 1995, 1996, 1997, 2000, 2004 Free Software Foundation, Inc.
Copyright (C) 1995,1996,1997,2000,2004,2005 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
@ -32,10 +32,13 @@ ENTRY (BP_SYM (memcmp))
ENTER
pushl %esi /* Save callee-safe registers. */
cfi_adjust_cfa_offset (4)
movl %edi, %edx /* Note that %edx is not used and can
so be used to save %edi. It's faster. */
cfi_register (edi, edx)
movl BLK1(%esp), %esi
cfi_rel_offset (esi, 0)
movl BLK2(%esp), %edi
movl LEN(%esp), %ecx
CHECK_BOUNDS_LOW (%esi, BLK1(%esp))
@ -65,7 +68,10 @@ ENTRY (BP_SYM (memcmp))
L(1): CHECK_BOUNDS_HIGH (%esi, BLK1(%esp), jbe)
CHECK_BOUNDS_HIGH (%edi, BLK2(%esp), jbe)
popl %esi /* Restore registers. */
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
movl %edx, %edi
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* i80386 __mpn_mul_1 -- Multiply a limb vector with a limb and store
the result in a second limb vector.
Copyright (C) 1992, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,1994,1997,1998,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -39,14 +39,21 @@ ENTRY (BP_SYM (__mpn_mul_1))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %size
movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %size /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %size)
@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_mul_1))
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop):
movl (%s1_ptr,%size,4), %eax
@ -71,9 +79,17 @@ L(oop):
movl %ebp, %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* rawmemchr (str, ch) -- Return pointer to first occurrence of CH in STR.
For Intel 80x86, x>=3.
Copyright (C) 1994,95,96,97,98,99,2000,2002 Free Software Foundation, Inc.
Copyright (C) 1994-2000,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -43,6 +43,8 @@ ENTRY (BP_SYM (__rawmemchr))
/* Save callee-safe register used in this function. */
pushl %edi
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
/* Load parameters into registers. */
movl STR(%esp), %eax
@ -217,6 +219,8 @@ L(9):
CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
RETURN_BOUNDED_POINTER (STR(%esp))
popl %edi /* pop saved register */
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,5 +1,5 @@
/* i80386 __mpn_rshift --
Copyright (C) 1992, 1994, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,1994,1997-2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -33,11 +33,16 @@ ENTRY (BP_SYM (__mpn_rshift))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 8)
movl S(%esp),%esi
cfi_rel_offset (esi, 4)
movl SIZE(%esp),%edx
movl CNT(%esp),%ecx
#if __BOUNDED_POINTERS__
@ -51,11 +56,13 @@ ENTRY (BP_SYM (__mpn_rshift))
negl %edx
movl (%esi,%edx,4),%ebx /* read least significant limb */
cfi_rel_offset (ebx, 0)
xorl %eax,%eax
shrdl %cl,%ebx,%eax /* compute carry limb */
incl %edx
jz L(end)
pushl %eax /* push carry limb onto stack */
cfi_adjust_cfa_offset (4)
testb $1,%dl
jnz L(1) /* enter loop in the middle */
movl %ebx,%eax
@ -75,20 +82,37 @@ L(1): movl (%esi,%edx,4),%eax
movl %eax,(%edi) /* store it */
popl %eax /* pop carry limb */
cfi_adjust_cfa_offset (-4)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret
cfi_adjust_cfa_offset (12)
cfi_rel_offset (edi, 8)
cfi_rel_offset (esi, 4)
cfi_rel_offset (ebx, 0)
L(end): shrl %cl,%ebx /* compute most significant limb */
movl %ebx,(%edi) /* store it */
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,7 +1,7 @@
/* copy no more then N bytes from SRC to DEST, returning the address of
the terminating '\0' in DEST.
For Intel 80x86, x>=3.
Copyright (C) 1994,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
Copyright (C) 1994-1997,2000,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Some bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -40,9 +40,11 @@ ENTRY (BP_SYM (__stpncpy))
ENTER
pushl %esi
cfi_adjust_cfa_offset (4)
movl DEST(%esp), %eax
movl SRC(%esp), %esi
cfi_rel_offset (esi, 0)
movl LEN(%esp), %ecx
CHECK_BOUNDS_LOW (%eax, DEST(%esp))
CHECK_BOUNDS_LOW (%esi, SRC(%esp))
@ -148,6 +150,8 @@ L(9):
RETURN_BOUNDED_POINTER (DEST(%esp))
#endif
popl %esi /* restore saved register content */
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
LEAVE
RET_PTR

View File

@ -1,6 +1,7 @@
/* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
For Intel 80x86, x>=3.
Copyright (C) 1994-1997,1999,2000,2002,2003 Free Software Foundation, Inc.
Copyright (C) 1994-1997,1999,2000,2002,2003,2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -35,6 +36,8 @@ ENTRY (BP_SYM (strchr))
ENTER
pushl %edi /* Save callee-safe registers used here. */
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
movl STR(%esp), %eax
movl CHR(%esp), %edx
CHECK_BOUNDS_LOW (%eax, STR(%esp))
@ -244,10 +247,14 @@ L(2): /* Return NULL. */
xorl %eax, %eax
RETURN_NULL_BOUNDED_POINTER
popl %edi /* restore saved register content */
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
L(73): addl $4, %eax /* adjust pointer */
L(72): addl $4, %eax
L(71): addl $4, %eax
@ -283,6 +290,8 @@ L(6):
CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
RETURN_BOUNDED_POINTER (STR(%esp))
popl %edi /* restore saved register content */
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,7 +1,7 @@
/* strchrnul (str, chr) -- Return pointer to first occurrence of CHR in STR
or the final NUL byte.
For Intel 80x86, x>=3.
Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1994-1997, 1999, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>
Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -36,6 +36,8 @@ ENTRY (BP_SYM (__strchrnul))
ENTER
pushl %edi /* Save callee-safe registers used here. */
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
movl STR(%esp), %eax
movl CHR(%esp), %edx
@ -274,6 +276,8 @@ L(7): testb %cl, %cl /* is first byte CHR? */
L(6): CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
RETURN_BOUNDED_POINTER (STR(%esp))
popl %edi /* restore saved register content */
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,7 +1,7 @@
/* strcspn (str, ss) -- Return the length of the initial segment of STR
which contains no characters from SS.
For Intel 80x86, x>=3.
Copyright (C) 1994,1995,1996,1997,2000,2003 Free Software Foundation, Inc.
Copyright (C) 1994-1997,2000,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -46,69 +46,133 @@ ENTRY (BP_SYM (strcspn))
xorl %ecx, %ecx /* %ecx = 0 !!! */
pushl %ecx /* make a 256 bytes long block filled with 0 */
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl $0 /* These immediate values make the label 2 */
cfi_adjust_cfa_offset (4)
pushl $0 /* to be aligned on a 16 byte boundary to */
cfi_adjust_cfa_offset (4)
pushl $0 /* get a better performance of the loop. */
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
/* For understanding the following code remember that %ecx == 0 now.
Although all the following instruction only modify %cl we always
@ -172,6 +236,7 @@ L(6): incl %eax
L(5): incl %eax
L(4): addl $256, %esp /* remove stopset */
cfi_adjust_cfa_offset (-256)
CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
subl %edx, %eax /* we have to return the number of valid
characters, so compute distance to first

View File

@ -1,7 +1,7 @@
/* strcspn (str, ss) -- Return the length of the initial segement of STR
which contains no characters from SS.
For Intel 80x86, x>=3.
Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1994-1997, 2000, 2003, 2005 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
This file is part of the GNU C Library.
@ -47,69 +47,133 @@ ENTRY (BP_SYM (strpbrk))
xorl %ecx, %ecx /* %ecx = 0 !!! */
pushl %ecx /* make a 256 bytes long block filled with 0 */
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl $0 /* These immediate values make the label 2 */
cfi_adjust_cfa_offset (4)
pushl $0 /* to be aligned on a 16 byte boundary to */
cfi_adjust_cfa_offset (4)
pushl $0 /* get a better performance of the loop. */
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
/* For understanding the following code remember that %ecx == 0 now.
Although all the following instruction only modify %cl we always
@ -173,6 +237,7 @@ L(6): incl %eax
L(5): incl %eax
L(4): addl $256, %esp /* remove stopset */
cfi_adjust_cfa_offset (-256)
CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
orb %cl, %cl /* was last character NUL? */

View File

@ -1,6 +1,6 @@
/* strrchr (str, ch) -- Return pointer to last occurrence of CH in STR.
For Intel 80x86, x>=3.
Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1994-1997, 2000, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -35,10 +35,14 @@ ENTRY (BP_SYM (strrchr))
ENTER
pushl %edi /* Save callee-safe registers used here. */
cfi_adjust_cfa_offset (4)
cfi_rel_offset (edi, 0)
pushl %esi
cfi_adjust_cfa_offset (4)
xorl %eax, %eax
movl STR(%esp), %esi
cfi_rel_offset (esi, 0)
movl CHR(%esp), %ecx
CHECK_BOUNDS_LOW (%esi, STR(%esp))
@ -299,20 +303,20 @@ L(21): addl $4, %esi
returned. */
L(20): cmpb %cl, %dl /* is first byte == C? */
jne L(24) /* no => skip */
jne L(24) /* no => skip */
movl %esi, %eax /* store address as result */
L(24): testb %dl, %dl /* is first byte == NUL? */
jz L(2) /* yes => return */
cmpb %cl, %dh /* is second byte == C? */
jne L(25) /* no => skip */
jne L(25) /* no => skip */
leal 1(%esi), %eax /* store address as result */
L(25): testb %dh, %dh /* is second byte == NUL? */
jz L(2) /* yes => return */
shrl $16,%edx /* make upper bytes accessible */
cmpb %cl, %dl /* is third byte == C */
jne L(26) /* no => skip */
jne L(26) /* no => skip */
leal 2(%esi), %eax /* store address as result */
L(26): testb %dl, %dl /* is third byte == NUL */
jz L(2) /* yes => return */
@ -324,7 +328,11 @@ L(26): testb %dl, %dl /* is third byte == NUL */
L(2): CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
RETURN_BOUNDED_POINTER (STR(%esp))
popl %esi /* restore saved register content */
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
RET_PTR

View File

@ -1,7 +1,7 @@
/* strcspn (str, ss) -- Return the length of the initial segment of STR
which contains only characters from SS.
For Intel 80x86, x>=3.
Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
Copyright (C) 1994-1997, 2000, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@ -46,69 +46,133 @@ ENTRY (BP_SYM (strspn))
xorl %ecx, %ecx /* %ecx = 0 !!! */
pushl %ecx /* make a 256 bytes long block filled with 0 */
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl $0 /* These immediate values make the label 2 */
cfi_adjust_cfa_offset (4)
pushl $0 /* to be aligned on a 16 byte boundary to */
cfi_adjust_cfa_offset (4)
pushl $0 /* get a better performance of the loop. */
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
/* For understanding the following code remember that %ecx == 0 now.
Although all the following instruction only modify %cl we always
@ -172,6 +236,7 @@ L(6): incl %eax
L(5): incl %eax
L(4): addl $256, %esp /* remove stopset */
cfi_adjust_cfa_offset (-256)
CHECK_BOUNDS_HIGH (%eax, STR(%esp), jb)
subl %edx, %eax /* we have to return the number of valid
characters, so compute distance to first

View File

@ -1,6 +1,6 @@
/* strtok (str, delim) -- Return next DELIM separated token from STR.
For Intel 80x86, x>=3.
Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1996-1998, 2000, 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -78,9 +78,13 @@ ENTRY (BP_SYM (FUNCTION))
#if !defined USE_AS_STRTOK_R && defined PIC
pushl %ebx /* Save PIC register. */
cfi_adjust_cfa_offset (4)
call L(here)
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebx, 4)
L(here):
popl %ebx
cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx
#endif
@ -125,69 +129,133 @@ L(1):
xorl %ecx, %ecx /* %ecx = 0 !!! */
pushl %ecx /* make a 256 bytes long block filled with 0 */
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl %ecx
cfi_adjust_cfa_offset (4)
pushl $0 /* These immediate values make the label 2 */
cfi_adjust_cfa_offset (4)
pushl $0 /* to be aligned on a 16 byte boundary to */
cfi_adjust_cfa_offset (4)
pushl $0 /* get a better performance of the loop. */
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
pushl $0
cfi_adjust_cfa_offset (4)
/* For understanding the following code remember that %ecx == 0 now.
Although all the following instruction only modify %cl we always
@ -284,6 +352,7 @@ L(9): incl %edx
L(8): /* Remove the stopset table. */
addl $256, %esp
cfi_adjust_cfa_offset (-256)
cmpl %eax, %edx
je L(returnNULL) /* There was no token anymore. */
@ -308,6 +377,8 @@ L(11):
L(epilogue):
#if !defined USE_AS_STRTOK_R && defined PIC
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
#endif
LEAVE
RET_PTR

View File

@ -1,6 +1,7 @@
/* i80386 __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
sum in a third limb vector.
Copyright (C) 1992, 1994, 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,1994,1995,1997,1998,2000,2005
Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -34,10 +35,14 @@ ENTRY (BP_SYM (__mpn_sub_n))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
movl RES(%esp),%edi
cfi_rel_offset (edi, 4)
movl S1(%esp),%esi
cfi_rel_offset (esi, 0)
movl S2(%esp),%edx
movl SIZE(%esp),%ecx
#if __BOUNDED_POINTERS__
@ -106,7 +111,11 @@ L(oop): movl (%esi),%eax
negl %eax
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,6 +1,6 @@
/* i80386 __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
the result from a second limb vector.
Copyright (C) 1992, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1992,1994,1997,1998,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
@ -39,14 +39,21 @@ ENTRY (BP_SYM (__mpn_submul_1))
ENTER
pushl %edi
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
movl RES(%esp), %res_ptr
cfi_rel_offset (res_ptr, 12)
movl S1(%esp), %s1_ptr
cfi_rel_offset (s1_ptr, 8)
movl SIZE(%esp), %sizeP
movl S2LIMB(%esp), %s2_limb
cfi_rel_offset (s2_limb, 0)
#if __BOUNDED_POINTERS__
shll $2, %sizeP /* convert limbs to bytes */
CHECK_BOUNDS_BOTH_WIDE (%res_ptr, RES(%esp), %sizeP)
@ -57,6 +64,7 @@ ENTRY (BP_SYM (__mpn_submul_1))
leal (%s1_ptr,%sizeP,4), %s1_ptr
negl %sizeP
xorl %ebp, %ebp
cfi_rel_offset (ebp, 4)
ALIGN (3)
L(oop):
movl (%s1_ptr,%sizeP,4), %eax
@ -72,9 +80,17 @@ L(oop):
movl %ebp, %eax
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
LEAVE
ret

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996,1997,98,99,2000,02,03,04 Free Software Foundation, Inc.
/* Copyright (C) 1996-2000,02,03,04,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@tamu.edu)
@ -83,12 +83,18 @@ ENTRY (BP_SYM (__clone))
/* Do the system call */
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
movl TLS+12(%esp),%esi
cfi_rel_offset (esi, 4)
movl PTID+12(%esp),%edx
movl FLAGS+12(%esp),%ebx
cfi_rel_offset (ebx, 8)
movl CTID+12(%esp),%edi
cfi_rel_offset (edi, 0)
movl $SYS_ify(clone),%eax
#ifdef RESET_PID
@ -98,8 +104,14 @@ ENTRY (BP_SYM (__clone))
int $0x80
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
test %eax,%eax
jl SYSCALL_ERROR_LABEL
@ -119,13 +131,15 @@ L(haspid):
call *%ebx
#ifdef PIC
call L(here)
cfi_adjust_cfa_offset (4)
L(here):
popl %ebx
cfi_adjust_cfa_offset (-4)
addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx
#endif
movl %eax, %ebx
movl $SYS_ify(exit), %eax
int $0x80
ENTER_KERNEL
#ifdef RESET_PID
.subsection 2

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995,96,97,98,99,2000,2002 Free Software Foundation, Inc.
/* Copyright (C) 1995,96,97,98,99,2000,2002,2005 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
@ -32,16 +32,24 @@ ENTRY (__mmap)
/* Save registers. */
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
movl 20(%esp), %ebx
cfi_rel_offset (ebx, 8)
movl 24(%esp), %ecx
movl 28(%esp), %edx
movl 32(%esp), %esi
cfi_rel_offset (esi, 4)
movl 36(%esp), %edi
cfi_rel_offset (edi, 0)
movl 40(%esp), %ebp
cfi_rel_offset (ebp, 12)
testl $0xfff, %ebp
movl $-EINVAL, %eax
jne L(skip)
@ -54,9 +62,17 @@ ENTRY (__mmap)
L(skip):
/* Restore registers. */
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
#else

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995,96,97,98,99,2000,2002 Free Software Foundation, Inc.
/* Copyright (C) 1995,96,97,98,99,2000,2002,2005 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
@ -42,9 +42,13 @@ ENTRY (BP_SYM (__mmap64))
/* Save registers. */
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
movl OFFLO(%esp), %edx
movl OFFHI(%esp), %ecx
@ -54,12 +58,16 @@ ENTRY (BP_SYM (__mmap64))
shrl $12, %ecx
jne L(einval)
movl %edx, %ebp
cfi_rel_offset (ebp, 12)
movl ADDR(%esp), %ebx
cfi_rel_offset (ebx, 8)
movl LEN(%esp), %ecx
movl PROT(%esp), %edx
movl FLAGS(%esp), %esi
cfi_rel_offset (esi, 4)
movl FD(%esp), %edi
cfi_rel_offset (edi, 0)
movl $SYS_ify(mmap2), %eax /* System call number in %eax. */
@ -69,9 +77,17 @@ L(do_syscall):
/* Restore registers. */
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
#ifndef __ASSUME_MMAP2_SYSCALL
2:
@ -87,12 +103,25 @@ L(do_syscall):
L(pseudo_end):
ret
cfi_adjust_cfa_offset (16)
cfi_rel_offset (ebp, 12)
cfi_rel_offset (ebx, 8)
cfi_rel_offset (esi, 4)
cfi_rel_offset (edi, 0)
/* This means the offset value is too large. */
L(einval):
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
movl $-EINVAL, %eax
jmp SYSCALL_ERROR_LABEL
#endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995-2000,2002,2003,2004 Free Software Foundation, Inc.
/* Copyright (C) 1995-2000,2002,2003,2004, 2005 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
@ -42,25 +42,41 @@ ENTRY (BP_SYM (__posix_fadvise64_l64))
/* Save registers. */
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
movl FD(%esp), %ebx
cfi_rel_offset (ebx, 8)
movl OFFLO(%esp), %ecx
movl OFFHI(%esp), %edx
movl LENLO(%esp), %esi
cfi_rel_offset (esi, 4)
movl LENHI(%esp), %edi
cfi_rel_offset (edi, 0)
movl FLAGS(%esp), %ebp
cfi_rel_offset (ebp, 12)
movl $SYS_ify(fadvise64_64), %eax
ENTER_KERNEL
/* Restore registers. */
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
#ifndef __ASSUME_FADVISE64_64_SYSCALL
cmpl $-ENOSYS, %eax
@ -80,8 +96,11 @@ ENTRY (BP_SYM (__posix_fadvise64_l64))
&& (!defined __ASSUME_FADVISE64_64_SYSCALL || !defined __NR_fadvise64_64)
1: /* Save registers. */
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
/* Overflow check. */
cmpl $0, LENHI(%esp)
@ -89,10 +108,13 @@ ENTRY (BP_SYM (__posix_fadvise64_l64))
jne L(overflow)
movl FD(%esp), %ebx
cfi_rel_offset (ebx, 8)
movl OFFLO(%esp), %ecx
movl OFFHI(%esp), %edx
movl LENLO(%esp), %esi
cfi_rel_offset (esi, 4)
movl FLAGS(%esp), %edi
cfi_rel_offset (edi, 0)
movl $SYS_ify(fadvise64), %eax
ENTER_KERNEL
@ -100,8 +122,14 @@ ENTRY (BP_SYM (__posix_fadvise64_l64))
/* Restore registers. */
L(overflow):
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
/* If 0 > %eax > -4096 there was an error. */
negl %eax

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc.
/* Copyright (C) 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
@ -32,22 +32,34 @@
ENTRY (BP_SYM (semtimedop))
pushl %ebp
cfi_adjust_cfa_offset (4)
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
movl $SYSOP_semtimedop, %ebx
cfi_rel_offset (ebx, 4)
movl SEMID(%esp), %ecx
movl NSOPS(%esp), %edx
movl SOPS(%esp), %edi
cfi_rel_offset (edi, 0)
movl TIMEOUT(%esp), %ebp
cfi_rel_offset (ebp, 8)
movl $__NR_ipc, %eax
ENTER_KERNEL
/* Restore registers. */
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
popl %ebp
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
/* If 0 > %eax > -4096 there was an error. */
cmpl $-4096, %eax

View File

@ -1,5 +1,5 @@
/* Install given context.
Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
@ -31,12 +31,16 @@ ENTRY(__setcontext)
the system call fails and we return from the function with an
error. */
pushl %ebx
cfi_adjust_cfa_offset (4)
xorl %edx, %edx
leal oSIGMASK(%eax), %ecx
movl $SIG_SETMASK, %ebx
cfi_rel_offset (ebx, 0)
movl $__NR_sigprocmask, %eax
ENTER_KERNEL
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
cmpl $-4095, %eax /* Check %eax for error. */
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */