aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2010-02-17 22:13:55 -0800
committerUlrich Drepper <drepper@redhat.com>2010-02-17 22:13:55 -0800
commit82abe82ad7e24a1c1f350fa78ea23a3e6caadff5 (patch)
tree69ee1575896203d4b02b168d293034d4ef96d56e /sysdeps
parent951ca0c5ff38620c658be73701bcbc075ae4a53f (diff)
downloadglibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.tar
glibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.tar.gz
glibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.tar.bz2
glibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.zip
Fix and cleanup unwind info in x86 strcmp-ssse<F3>.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/i686/multiarch/strcmp-ssse3.S87
1 files changed, 14 insertions, 73 deletions
diff --git a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
index 338b00339d..40994c05b1 100644
--- a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
@@ -40,6 +40,7 @@
# endif
# define STR1 4
# define STR2 STR1+4
+# define RETURN ret; .p2align 4
# define UPDATE_STRNCMP_COUNTER
#else
# ifndef STRCMP
@@ -48,7 +49,7 @@
# define STR1 8
# define STR2 STR1+4
# define CNT STR2+4
-
+# define RETURN POP (%ebp); ret; .p2align 4; CFI_PUSH (%ebp)
# define UPDATE_STRNCMP_COUNTER \
/* calculate left number to compare */ \
mov $16, %esi; \
@@ -1913,15 +1914,8 @@ L(less16bytes):
movzx 7(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte0):
#ifdef USE_AS_STRNCMP
cmp $0, %ebp
@@ -1931,15 +1925,8 @@ L(Byte0):
movzx (%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte1):
#ifdef USE_AS_STRNCMP
cmp $1, %ebp
@@ -1949,15 +1936,8 @@ L(Byte1):
movzx 1(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte2):
#ifdef USE_AS_STRNCMP
cmp $2, %ebp
@@ -1967,15 +1947,8 @@ L(Byte2):
movzx 2(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte3):
#ifdef USE_AS_STRNCMP
cmp $3, %ebp
@@ -1985,15 +1958,8 @@ L(Byte3):
movzx 3(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte4):
#ifdef USE_AS_STRNCMP
cmp $4, %ebp
@@ -2003,15 +1969,8 @@ L(Byte4):
movzx 4(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte5):
#ifdef USE_AS_STRNCMP
cmp $5, %ebp
@@ -2021,15 +1980,8 @@ L(Byte5):
movzx 5(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(Byte6):
#ifdef USE_AS_STRNCMP
cmp $6, %ebp
@@ -2039,15 +1991,8 @@ L(Byte6):
movzx 6(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
- .p2align 4
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(2next_8_bytes):
add $8, %eax
add $8, %edx
@@ -2086,14 +2031,8 @@ L(2next_8_bytes):
movzx 7(%edx), %eax
sub %ecx, %eax
-#ifdef USE_AS_STRNCMP
- POP (%ebp)
-#endif
- ret
+ RETURN
-#ifdef USE_AS_STRNCMP
- CFI_PUSH (%ebp)
-#endif
L(neq):
mov $1, %eax
ja L(neq_bigger)
@@ -2105,7 +2044,8 @@ L(neq_bigger):
ret
#ifdef USE_AS_STRNCMP
- cfi_remember_state
+ .p2align 4
+ cfi_restore_state
L(more8byteseq):
POP (%esi)
POP (%edi)
@@ -2121,6 +2061,7 @@ L(eq):
ret
#ifdef USE_AS_STRNCMP
+ .p2align 4
CFI_PUSH (%ebp)
L(less16bytes_sncmp):
test %ebp, %ebp