m68k: remove arch specific non-optimized memcmp()
authorGreg Ungerer <gerg@uclinux.org>
Thu, 3 Feb 2011 11:31:20 +0000 (21:31 +1000)
committerGreg Ungerer <gerg@uclinux.org>
Tue, 15 Feb 2011 23:42:24 +0000 (09:42 +1000)
The m68k arch implements its own memcmp() function. It is not optimized
in any way (it is the most strait forward coding of memcmp you can get).
Remove it and use the kernels standard memcmp() implementation.

This also goes part of the way to fixing a regression caused by commit
ea61bc461d09e8d331a307916530aaae808c72a2 ("m68k/m68knommu: merge MMU and
non-MMU string.h"), which breaks non-coldfire non-mmu builds (which is
the 68x328 and 68360 families). They currently have no memcmp() function
defined, since there is none in the m68knommu/lib functions.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/include/asm/string.h
arch/m68k/lib/string.c

index 65b131282837c93c9c1accc198815b2d67532ade..ffc3c3f6124391edc75d3292be35da76eb736e79 100644 (file)
@@ -102,11 +102,9 @@ static inline int strcmp(const char *cs, const char *ct)
 
 #define __HAVE_ARCH_MEMMOVE
 extern void *memmove(void *, const void *, __kernel_size_t);
+#endif /* CONFIG_COLDFIRE */
 
-#define __HAVE_ARCH_MEMCMP
-extern int memcmp(const void *, const void *, __kernel_size_t);
 #define memcmp(d, s, n) __builtin_memcmp(d, s, n)
-#endif /* CONFIG_COLDFIRE */
 
 #define __HAVE_ARCH_MEMSET
 extern void *memset(void *, int, __kernel_size_t);
index 4253f870e54fc8fe24d510bfef948c3751300a69..d399c5f25636f46473ea06a3ee796ec3bd2888cd 100644 (file)
@@ -243,14 +243,3 @@ void *memmove(void *dest, const void *src, size_t n)
        return xdest;
 }
 EXPORT_SYMBOL(memmove);
-
-int memcmp(const void *cs, const void *ct, size_t count)
-{
-       const unsigned char *su1, *su2;
-
-       for (su1 = cs, su2 = ct; count > 0; ++su1, ++su2, count--)
-               if (*su1 != *su2)
-                       return *su1 < *su2 ? -1 : +1;
-       return 0;
-}
-EXPORT_SYMBOL(memcmp);