summaryrefslogtreecommitdiffstats
path: root/arch/x86/lib/string_32.c
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2007-10-17 18:04:38 +0200
committerThomas Gleixner <tglx@inhelltoy.tec.linutronix.de>2007-10-17 20:16:23 +0200
commit61d08a9ea3d5fd680213aa7a15fcda69ce11987d (patch)
tree0ea4baa5fb8dca8f9ad2b9e8421b7e102620c25a /arch/x86/lib/string_32.c
parentx86: make atomic64_t work like atomic_t (diff)
downloadlinux-61d08a9ea3d5fd680213aa7a15fcda69ce11987d.tar.xz
linux-61d08a9ea3d5fd680213aa7a15fcda69ce11987d.zip
i386: Remove strrchr assembler implementation
The constraints in the inline assembler implementation of i386 strrchr() were incorrect and break the build with recent gcc 4.3. Since there are only very few callers of strrchr() and none of them are performance relevant just remove the assembler implementation and use the C fallback instead. [ tglx: arch/x86 adaptation ] Cc: rguenther@suse.de Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/lib/string_32.c')
-rw-r--r--arch/x86/lib/string_32.c20
1 files changed, 0 insertions, 20 deletions
diff --git a/arch/x86/lib/string_32.c b/arch/x86/lib/string_32.c
index 2c773fefa3dd..c2c0504a3071 100644
--- a/arch/x86/lib/string_32.c
+++ b/arch/x86/lib/string_32.c
@@ -160,26 +160,6 @@ char *strchr(const char * s, int c)
EXPORT_SYMBOL(strchr);
#endif
-#ifdef __HAVE_ARCH_STRRCHR
-char *strrchr(const char * s, int c)
-{
- int d0, d1;
- char * res;
- asm volatile( "movb %%al,%%ah\n"
- "1:\tlodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "jne 2f\n\t"
- "leal -1(%%esi),%0\n"
- "2:\ttestb %%al,%%al\n\t"
- "jne 1b"
- :"=g" (res), "=&S" (d0), "=&a" (d1)
- :"0" (0),"1" (s),"2" (c)
- :"memory");
- return res;
-}
-EXPORT_SYMBOL(strrchr);
-#endif
-
#ifdef __HAVE_ARCH_STRLEN
size_t strlen(const char * s)
{