mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 00:10:10 +00:00
* 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:
parent
5085cd1fa1
commit
1ad9da69c6
47
ChangeLog
47
ChangeLog
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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? */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user