about summary refs log tree commit diff
path: root/sysdeps/i386/i686/memcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/i686/memcmp.S')
-rw-r--r--sysdeps/i386/i686/memcmp.S17
1 files changed, 12 insertions, 5 deletions
diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S
index 4f1c7413fc..4bd5394bec 100644
--- a/sysdeps/i386/i686/memcmp.S
+++ b/sysdeps/i386/i686/memcmp.S
@@ -29,7 +29,8 @@
 #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
+			cfi_restore (ebx); LEAVE; ret; \
+			cfi_adjust_cfa_offset (4); cfi_rel_offset (ebx, 0);
 
 /* Load an entry in a jump table into EBX.  TABLE is a jump table
    with relative offsets.  INDEX is a register contains the index
@@ -79,6 +80,8 @@ L(neq):
 	sbbl	$-1, %eax
 	RETURN
 
+	cfi_adjust_cfa_offset (4)
+	cfi_rel_offset (ebx, 0)
 L(not_1):
 	jl	L(bye)			/* LEN == 0  */
 
@@ -137,8 +140,9 @@ L(0bytes):
 	xorl	%eax, %eax
 	RETURN
 
-	cfi_adjust_cfa_offset (4)
+	cfi_adjust_cfa_offset (8)
 	cfi_rel_offset (esi, 0)
+	cfi_rel_offset (ebx, 4)
 L(29bytes):
 	movl	-29(%esi), %eax
 	movl	-29(%edx), %ecx
@@ -184,8 +188,9 @@ L(1bytes):
 	xorl	%eax, %eax
 	RETURN
 
-	cfi_adjust_cfa_offset (4)
+	cfi_adjust_cfa_offset (8)
 	cfi_rel_offset (esi, 0)
+	cfi_rel_offset (ebx, 4)
 L(30bytes):
 	movl	-30(%esi), %eax
 	movl	-30(%edx), %ecx
@@ -234,8 +239,9 @@ L(2bytes):
 	xorl	%eax, %eax
 	RETURN
 
-	cfi_adjust_cfa_offset (4)
+	cfi_adjust_cfa_offset (8)
 	cfi_rel_offset (esi, 0)
+	cfi_rel_offset (ebx, 4)
 L(31bytes):
 	movl	-31(%esi), %eax
 	movl	-31(%edx), %ecx
@@ -287,8 +293,9 @@ L(3bytes):
 	xorl	%eax, %eax
 	RETURN
 
-	cfi_adjust_cfa_offset (4)
+	cfi_adjust_cfa_offset (8)
 	cfi_rel_offset (esi, 0)
+	cfi_rel_offset (ebx, 4)
 	ALIGN (4)
 /* ECX >= 32.  */
 L(32bytesormore):