csky: Fixup abiv1 memset error
authorGuo Ren <ren_guo@c-sky.com>
Fri, 28 Jun 2019 12:39:46 +0000 (20:39 +0800)
committerGuo Ren <ren_guo@c-sky.com>
Fri, 19 Jul 2019 06:21:36 +0000 (14:21 +0800)
Current memset implementation in abiv1 is wrong and it'll cause unalign
access. Just remove it and use the generic one. This patch will cause
performance degradation and we will improve it with a new design in next
patchset.

Signed-off-by: Guo Ren <ren_guo@c-sky.com>
Cc: Arnd Bergmann <arnd@arndb.de>
arch/csky/abiv1/Makefile
arch/csky/abiv1/inc/abi/string.h
arch/csky/abiv1/memset.c [deleted file]
arch/csky/abiv1/strksyms.c

index e52b42beac97e1fd8ca56e0f08a1eb869e25d6e6..601ce3b2fb85c2e81f67a629c6e2437192c849ab 100644 (file)
@@ -5,5 +5,4 @@ obj-y                                   += bswapsi.o
 obj-y                                  += cacheflush.o
 obj-y                                  += mmap.o
 obj-y                                  += memcpy.o
-obj-y                                  += memset.o
 obj-y                                  += strksyms.o
index 5abe80be044d26578deb2842aa37fbc42bb67dfb..0cd43384f8d22295b2d34b6d071aa0a8f18ba165 100644 (file)
@@ -7,7 +7,4 @@
 #define __HAVE_ARCH_MEMCPY
 extern void *memcpy(void *, const void *, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMSET
-extern void *memset(void *, int, __kernel_size_t);
-
 #endif /* __ABI_CSKY_STRING_H */
diff --git a/arch/csky/abiv1/memset.c b/arch/csky/abiv1/memset.c
deleted file mode 100644 (file)
index b4aa75b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
-
-#include <linux/types.h>
-
-void *memset(void *dest, int c, size_t l)
-{
-       char *d = dest;
-       int ch = c & 0xff;
-       int tmp = (ch | ch << 8 | ch << 16 | ch << 24);
-
-       while (((uintptr_t)d & 0x3) && l--)
-               *d++ = ch;
-
-       while (l >= 16) {
-               *(((u32 *)d))   = tmp;
-               *(((u32 *)d)+1) = tmp;
-               *(((u32 *)d)+2) = tmp;
-               *(((u32 *)d)+3) = tmp;
-               l -= 16;
-               d += 16;
-       }
-
-       while (l > 3) {
-               *(((u32 *)d)) = tmp;
-               l -= 4;
-               d += 4;
-       }
-
-       while (l) {
-               *d = ch;
-               l--;
-               d++;
-       }
-
-       return dest;
-}
index 436995c9b75c98a9f6d27fe3475ce19816cc8ac9..c7ccbb27e8d7760f6c9673b02d75c25051a1ef30 100644 (file)
@@ -4,4 +4,3 @@
 #include <linux/module.h>
 
 EXPORT_SYMBOL(memcpy);
-EXPORT_SYMBOL(memset);