|
|
@@ -0,0 +1,83 @@
|
|
|
+--- a/arch/mips/include/asm/string.h
|
|
|
++++ b/arch/mips/include/asm/string.h
|
|
|
+@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__
|
|
|
+
|
|
|
+ #define __HAVE_ARCH_MEMSET
|
|
|
+ extern void *memset(void *__s, int __c, size_t __count);
|
|
|
++#define memset(__s, __c, len) \
|
|
|
++({ \
|
|
|
++ size_t __len = (len); \
|
|
|
++ void *__ret; \
|
|
|
++ if (__builtin_constant_p(len) && __len >= 64) \
|
|
|
++ __ret = memset((__s), (__c), __len); \
|
|
|
++ else \
|
|
|
++ __ret = __builtin_memset((__s), (__c), __len); \
|
|
|
++ __ret; \
|
|
|
++})
|
|
|
+
|
|
|
+ #define __HAVE_ARCH_MEMCPY
|
|
|
+ extern void *memcpy(void *__to, __const__ void *__from, size_t __n);
|
|
|
++#define memcpy(dst, src, len) \
|
|
|
++({ \
|
|
|
++ size_t __len = (len); \
|
|
|
++ void *__ret; \
|
|
|
++ if (__builtin_constant_p(len) && __len >= 64) \
|
|
|
++ __ret = memcpy((dst), (src), __len); \
|
|
|
++ else \
|
|
|
++ __ret = __builtin_memcpy((dst), (src), __len); \
|
|
|
++ __ret; \
|
|
|
++})
|
|
|
+
|
|
|
+ #define __HAVE_ARCH_MEMMOVE
|
|
|
+ extern void *memmove(void *__dest, __const__ void *__src, size_t __n);
|
|
|
++#define memmove(dst, src, len) \
|
|
|
++({ \
|
|
|
++ size_t __len = (len); \
|
|
|
++ void *__ret; \
|
|
|
++ if (__builtin_constant_p(len) && __len >= 64) \
|
|
|
++ __ret = memmove((dst), (src), __len); \
|
|
|
++ else \
|
|
|
++ __ret = __builtin_memmove((dst), (src), __len); \
|
|
|
++ __ret; \
|
|
|
++})
|
|
|
++
|
|
|
++#define __HAVE_ARCH_MEMCMP
|
|
|
++#define memcmp(src1, src2, len) __builtin_memcmp((src1), (src2), (len))
|
|
|
+
|
|
|
+ #endif /* _ASM_STRING_H */
|
|
|
+--- a/arch/mips/lib/Makefile
|
|
|
++++ b/arch/mips/lib/Makefile
|
|
|
+@@ -3,7 +3,7 @@
|
|
|
+ #
|
|
|
+
|
|
|
+ lib-y += csum_partial.o delay.o memcpy.o memcpy-inatomic.o memset.o \
|
|
|
+- strlen_user.o strncpy_user.o strnlen_user.o uncached.o
|
|
|
++ strlen_user.o strncpy_user.o strnlen_user.o uncached.o memcmp.o
|
|
|
+
|
|
|
+ obj-y += iomap.o
|
|
|
+ obj-$(CONFIG_PCI) += iomap-pci.o
|
|
|
+--- /dev/null
|
|
|
++++ b/arch/mips/lib/memcmp.c
|
|
|
+@@ -0,0 +1,22 @@
|
|
|
++/*
|
|
|
++ * copied from linux/lib/string.c
|
|
|
++ *
|
|
|
++ * Copyright (C) 1991, 1992 Linus Torvalds
|
|
|
++ */
|
|
|
++
|
|
|
++#include <linux/module.h>
|
|
|
++#include <linux/string.h>
|
|
|
++
|
|
|
++#undef memcmp
|
|
|
++int memcmp(const void *cs, const void *ct, size_t count)
|
|
|
++{
|
|
|
++ const unsigned char *su1, *su2;
|
|
|
++ int res = 0;
|
|
|
++
|
|
|
++ for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
|
|
|
++ if ((res = *su1 - *su2) != 0)
|
|
|
++ break;
|
|
|
++ return res;
|
|
|
++}
|
|
|
++EXPORT_SYMBOL(memcmp);
|
|
|
++
|