summaryrefslogtreecommitdiff
path: root/libc/sysdeps/i386/i686/strcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/i386/i686/strcmp.S')
-rw-r--r--libc/sysdeps/i386/i686/strcmp.S27
1 files changed, 4 insertions, 23 deletions
diff --git a/libc/sysdeps/i386/i686/strcmp.S b/libc/sysdeps/i386/i686/strcmp.S
index b53260ffd..6ca6220a0 100644
--- a/libc/sysdeps/i386/i686/strcmp.S
+++ b/libc/sysdeps/i386/i686/strcmp.S
@@ -19,21 +19,16 @@
#include <sysdep.h>
#include "asm-syntax.h"
-#include "bp-sym.h"
-#include "bp-asm.h"
-#define PARMS LINKAGE /* no space for saved regs */
+#define PARMS 4 /* no space for saved regs */
#define STR1 PARMS
-#define STR2 STR1+PTR_SIZE
+#define STR2 STR1+4
.text
-ENTRY (BP_SYM (strcmp))
- ENTER
+ENTRY (strcmp)
movl STR1(%esp), %ecx
movl STR2(%esp), %edx
- CHECK_BOUNDS_LOW (%ecx, STR1(%esp))
- CHECK_BOUNDS_LOW (%edx, STR2(%esp))
L(oop): movb (%ecx), %al
cmpb (%edx), %al
@@ -46,26 +41,12 @@ L(oop): movb (%ecx), %al
xorl %eax, %eax
/* when strings are equal, pointers rest one beyond
the end of the NUL terminators. */
- CHECK_BOUNDS_HIGH (%ecx, STR1(%esp), jbe)
- CHECK_BOUNDS_HIGH (%edx, STR2(%esp), jbe)
- LEAVE
ret
-#ifndef __BOUNDED_POINTERS__
L(neq): movl $1, %eax
movl $-1, %ecx
cmovbl %ecx, %eax
-#else
-L(neq): movl $1, %eax
- ja L(chk)
- negl %eax
- /* When strings differ, pointers rest on
- the unequal characters. */
-L(chk): CHECK_BOUNDS_HIGH (%ecx, STR1(%esp), jb)
- CHECK_BOUNDS_HIGH (%edx, STR2(%esp), jb)
-#endif
- LEAVE
ret
-END (BP_SYM (strcmp))
+END (strcmp)
libc_hidden_builtin_def (strcmp)