* 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.
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.
+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
/* Mutex initializers. */
#define PTHREAD_MUTEX_INITIALIZER \
- { }
+ { { 0, } }
#ifdef __USE_GNU
# if __WORDSIZE == 64
# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \
/* Read-write lock initializers. */
# define PTHREAD_RWLOCK_INITIALIZER \
- { }
+ { { 0, } }
# ifdef __USE_GNU
# if __WORDSIZE == 64
# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \
/* Conditional variable handling. */
-#define PTHREAD_COND_INITIALIZER { }
+#define PTHREAD_COND_INITIALIZER { { 0, } }
/* Cleanup buffers */
/* 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
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__
/* 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
negl %eax
popl %esi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (esi)
popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
LEAVE
ret
/* 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
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)
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
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
/* 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
/* 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))
/* 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
/* 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
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))
# asin
Test "asin (-0.5) == -pi/6":
-ldouble: 1
ildouble: 1
-Test "asin (-1.0) == -pi/2":
ldouble: 1
+Test "asin (-1.0) == -pi/2":
ildouble: 1
-Test "asin (0.5) == pi/6":
ldouble: 1
+Test "asin (0.5) == pi/6":
ildouble: 1
-Test "asin (0.75) == 0.848062078981481008052944338998418080":
ldouble: 1
+Test "asin (0.75) == 0.848062078981481008052944338998418080":
ildouble: 1
-Test "asin (1.0) == pi/2":
ldouble: 1
+Test "asin (1.0) == pi/2":
ildouble: 1
+ldouble: 1
# atanh
Test "atanh (0.75) == 0.972955074527656652552676371721589865":
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
# 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: 1
+double: 3
float: 1
-idouble: 1
+idouble: 3
ifloat: 1
Test "j0 (2.0) == 0.223890779141235668051827454649948626":
+double: 1
float: 1
+idouble: 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":
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
# 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: 1
+double: 3
float: 1
-idouble: 1
+idouble: 3
ifloat: 1
Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
+double: 1
float: 1
+idouble: 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":
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
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))":
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
idouble: 1
ifloat: 1
Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
ildouble: 1
ldouble: 1
-ifloat: 1
+Test "y0 (1.5) == 0.382448923797758843955068554978089862":
+double: 1
float: 1
-double: 2
-idouble: 2
+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
-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
-float: 1
-ifloat: 1
-double: 1
-idouble: 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
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":
idouble: 1
ifloat: 1
Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
-ildouble: 1
-ldouble: 1
-ifloat: 1
-float: 1
double: 2
+float: 1
idouble: 2
-Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
ifloat: 1
-float: 1
+ildouble: 1
+ldouble: 1
+Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
double: 1
+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
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
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
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
ifloat: 1
ildouble: 2
ldouble: 2
-Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
-float: 1
-ifloat: 1
+Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
double: 1
+float: 1
idouble: 1
-Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
+ifloat: 1
+Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
double: 1
float: 1
idouble: 1
ldouble: 622
Function: "asin":
-ldouble: 1
ildouble: 1
+ldouble: 1
Function: "atanh":
ildouble: 2
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
float: 1
Function: "j0":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
ildouble: 1
ldouble: 1
ldouble: 1
Function: "jn":
-double: 2
+double: 5
float: 2
-idouble: 2
+idouble: 5
ifloat: 2
ildouble: 2
ldouble: 2
/* 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>
ENTER
pushl %edi /* Save callee-safe register. */
+ cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edx
movl SRC(%esp), %ecx
/* 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 */
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
/* 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
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 */
shrl $2, %ecx
#endif
movl (%ebx),%ebp
+ cfi_rel_offset (ebp, 4)
decl %ecx
movl %ecx,%edx
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 */
jnz L(oop)
popl %edx
+ cfi_adjust_cfa_offset (-4)
L(end):
decl %edx /* test %edx w/o clobbering carry */
js 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
/* 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
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)
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
+ cfi_rel_offset (ebp, 4)
ALIGN (3)
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
/* 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
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 */
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)
jnz L(oop)
L(end): popl %ebx
+ cfi_adjust_cfa_offset (-4)
andl $7,%ebx
jz L(end2)
L(oop2):
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
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
L(Lend):
popl %ebx
+ cfi_adjust_cfa_offset (-4)
sbbl %eax,%eax /* save carry in %eax */
andl $7,%ebx
jz L(Lend2)
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
/* 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.
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)
#endif
popl %esi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (esi)
popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
LEAVE
RET_PTR
/* 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>
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
RETURN_BOUNDED_POINTER (DEST(%esp))
#endif
popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
LEAVE
#if BZERO_P
/* 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
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)
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
+ cfi_rel_offset (ebp, 4)
ALIGN (3)
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
/* 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
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 */
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)
jnz L(oop)
L(end): popl %ebx
+ cfi_adjust_cfa_offset (-4)
andl $7,%ebx
jz L(end2)
L(oop2):
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
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
decl %ebx
pushl %ebx
+ cfi_adjust_cfa_offset (4)
shrl $3,%ebx
shrl $1,%edx
L(Lend):
popl %ebx
+ cfi_adjust_cfa_offset (-4)
sbbl %eax,%eax /* save carry in %eax */
andl $7,%ebx
jz L(Lend2)
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
/* 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>.
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
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
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 */
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
/* 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.
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))
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
#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
/* 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
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 */
CHECK_BOUNDS_BOTH_WIDE (%ebx, S2(%esp), %ecx)
shrl $2, %ecx
#endif
+ cfi_rel_offset (ebp, 4)
movl (%ebx),%ebp
decl %ecx
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 */
jnz L(oop)
popl %edx
+ cfi_adjust_cfa_offset (-4)
L(end):
decl %edx /* test %edx w/o clobbering carry */
js 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
/* 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
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)
leal (%s1_ptr,%size,4), %s1_ptr
negl %size
xorl %ebp, %ebp
+ cfi_rel_offset (ebp, 4)
ALIGN (3)
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
/* 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
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__
negl %eax
popl %esi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (esi)
popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
LEAVE
ret
#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
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 */
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
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
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
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):
sbbl %eax, %eax
sbbl $-1, %eax
popl %esi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (esi)
RETURN
END (BP_SYM (memcmp))
/* 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
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)
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
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
/* 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
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
2: rep
movsl
xchgl %edi, %eax
+ cfi_restore (edi)
movl %edx, %esi
+ cfi_restore (esi)
RETURN_BOUNDED_POINTER (DEST(%esp))
LEAVE
cld
pushl %edi
+ cfi_adjust_cfa_offset (4)
movl DEST(%esp), %edx
movl LEN(%esp), %ecx
CHECK_BOUNDS_BOTH_WIDE (%edx, DEST(%esp), %ecx)
#endif
jecxz 1f
movl %edx, %edi
+ cfi_rel_offset (edi, 0)
andl $3, %edx
jz 2f
jnp 3f
RETURN_BOUNDED_POINTER (DEST(%esp))
#endif
popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
LEAVE
#if BZERO_P
/* 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.
#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
table. */
movl %edi, %edx
subl $256, %esp
+ cfi_adjust_cfa_offset (256)
movl $64, %ecx
movl %esp, %edi
xorl %eax, %eax
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
/* 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
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__
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
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
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
-/* 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>
/* 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
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
/* 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
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))
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
/* 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
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)
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
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
/* 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>
/* 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
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
/* 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
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__
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
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
/* 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>
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))
RETURN_BOUNDED_POINTER (DEST(%esp))
#endif
popl %esi /* restore saved register content */
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (esi)
LEAVE
RET_PTR
/* 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>
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))
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
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
/* 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>
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
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
/* 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>
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
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
/* 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.
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
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? */
/* 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>
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))
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 */
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
/* 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>
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
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
/* 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.
#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
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
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. */
L(epilogue):
#if !defined USE_AS_STRTOK_R && defined PIC
popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
#endif
LEAVE
RET_PTR
/* 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
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__
negl %eax
popl %esi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (esi)
popl %edi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (edi)
LEAVE
ret
/* 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
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)
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
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
-/* 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)
/* 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
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
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
-/* 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
/* 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)
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
-/* 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
/* 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
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. */
/* 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:
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
-/* 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
/* 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
&& (!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)
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
/* 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
-/* 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.
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
/* 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.
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. */