about summary refs log tree commit diff
path: root/sysdeps/i386/i686/strcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/i686/strcmp.S')
-rw-r--r--sysdeps/i386/i686/strcmp.S37
1 files changed, 21 insertions, 16 deletions
diff --git a/sysdeps/i386/i686/strcmp.S b/sysdeps/i386/i686/strcmp.S
index 8ffc5b0bb5..efda8515aa 100644
--- a/sysdeps/i386/i686/strcmp.S
+++ b/sysdeps/i386/i686/strcmp.S
@@ -1,5 +1,5 @@
 /* Highly optimized version for ix86, x>=6.
-   Copyright (C) 1999 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
 
@@ -20,29 +20,34 @@
 
 #include <sysdep.h>
 #include "asm-syntax.h"
+#include "bp-asm.h"
 
-/*
-   INPUT PARAMETERS:
-   s1          (sp + 4)
-   s2          (sp + 8)
-*/
-
+#define PARMS	LINKAGE		/* no space for saved regs */
+#define STR1	PARMS
+#define STR2	STR1+PTR_SIZE
 
         .text
 ENTRY (strcmp)
-	movl	4(%esp), %ecx
-	movl	8(%esp), %edx
-1:	movb	(%ecx), %al
+	ENTER
+
+	movl	STR1(%esp), %ecx
+	movl	STR2(%esp), %edx
+
+L(oop):	movb	(%ecx), %al
 	incl	%ecx
 	cmpb	(%edx), %al
-	jne	2f
+	jne	L(neq)
 	incl	%edx
 	testb	%al, %al
-	jnz	1b
+	jnz	L(oop)
+
 	xorl	%eax, %eax
-	jmp	3f
-2:	movl	$1, %eax
-	ja	3f
+	jmp	L(out)
+
+L(neq):	movl	$1, %eax
+	ja	L(out)
 	negl	%eax
-3:	ret
+
+L(out):	LEAVE
+	ret
 END (strcmp)