summaryrefslogtreecommitdiff
path: root/sysdeps/i386/i686
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/i686')
-rw-r--r--sysdeps/i386/i686/add_n.S10
-rw-r--r--sysdeps/i386/i686/memcmp.S26
-rw-r--r--sysdeps/i386/i686/memmove.S11
-rw-r--r--sysdeps/i386/i686/mempcpy.S6
-rw-r--r--sysdeps/i386/i686/memset.S4
-rw-r--r--sysdeps/i386/i686/strtok.S8
6 files changed, 59 insertions, 6 deletions
diff --git a/sysdeps/i386/i686/add_n.S b/sysdeps/i386/i686/add_n.S
index e36b0d0a5d..3cce33acfe 100644
--- a/sysdeps/i386/i686/add_n.S
+++ b/sysdeps/i386/i686/add_n.S
@@ -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
diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S
index 29aa546df5..4f1c7413fc 100644
--- a/sysdeps/i386/i686/memcmp.S
+++ b/sysdeps/i386/i686/memcmp.S
@@ -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))
diff --git a/sysdeps/i386/i686/memmove.S b/sysdeps/i386/i686/memmove.S
index 951e139ad4..a433622246 100644
--- a/sysdeps/i386/i686/memmove.S
+++ b/sysdeps/i386/i686/memmove.S
@@ -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
diff --git a/sysdeps/i386/i686/mempcpy.S b/sysdeps/i386/i686/mempcpy.S
index 843a35823a..6437e4a5d4 100644
--- a/sysdeps/i386/i686/mempcpy.S
+++ b/sysdeps/i386/i686/mempcpy.S
@@ -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
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
index 0b47547141..5ea50efff8 100644
--- a/sysdeps/i386/i686/memset.S
+++ b/sysdeps/i386/i686/memset.S
@@ -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
diff --git a/sysdeps/i386/i686/strtok.S b/sysdeps/i386/i686/strtok.S
index 3d81fb6d42..0cd266a2a1 100644
--- a/sysdeps/i386/i686/strtok.S
+++ b/sysdeps/i386/i686/strtok.S
@@ -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