about summary refs log tree commit diff
path: root/sysdeps/i386
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/i386
parent951ca0c5ff38620c658be73701bcbc075ae4a53f (diff)
downloadglibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.tar.gz
glibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.tar.xz
glibc-82abe82ad7e24a1c1f350fa78ea23a3e6caadff5.zip
Fix and cleanup unwind info in x86 strcmp-ssse<F3>.
Diffstat (limited to 'sysdeps/i386')
-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