diff options
author | Guo Ren <ren_guo@c-sky.com> | 2019-06-28 20:39:46 +0800 |
---|---|---|
committer | Guo Ren <ren_guo@c-sky.com> | 2019-07-19 14:21:36 +0800 |
commit | bdfeb0ccea1a12b58299b95eb0f28e2aa26de4c2 (patch) | |
tree | 302f7d99767e5f4a34dc35c7b164258dcd70d8cf | |
parent | 4e562c11664c0e0e84bb8495894b8637acc1c095 (diff) | |
download | linux-fpga-bdfeb0ccea1a12b58299b95eb0f28e2aa26de4c2.tar.gz |
csky: Fixup abiv1 memset error
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>
-rw-r--r-- | arch/csky/abiv1/Makefile | 1 | ||||
-rw-r--r-- | arch/csky/abiv1/inc/abi/string.h | 3 | ||||
-rw-r--r-- | arch/csky/abiv1/memset.c | 37 | ||||
-rw-r--r-- | arch/csky/abiv1/strksyms.c | 1 |
4 files changed, 0 insertions, 42 deletions
diff --git a/arch/csky/abiv1/Makefile b/arch/csky/abiv1/Makefile index e52b42beac97e1..601ce3b2fb85c2 100644 --- a/arch/csky/abiv1/Makefile +++ b/arch/csky/abiv1/Makefile @@ -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 diff --git a/arch/csky/abiv1/inc/abi/string.h b/arch/csky/abiv1/inc/abi/string.h index 5abe80be044d26..0cd43384f8d222 100644 --- a/arch/csky/abiv1/inc/abi/string.h +++ b/arch/csky/abiv1/inc/abi/string.h @@ -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 index b4aa75b99c5d10..00000000000000 --- a/arch/csky/abiv1/memset.c +++ /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; -} diff --git a/arch/csky/abiv1/strksyms.c b/arch/csky/abiv1/strksyms.c index 436995c9b75c98..c7ccbb27e8d776 100644 --- a/arch/csky/abiv1/strksyms.c +++ b/arch/csky/abiv1/strksyms.c @@ -4,4 +4,3 @@ #include <linux/module.h> EXPORT_SYMBOL(memcpy); -EXPORT_SYMBOL(memset); |