diff options
author | Michal Simek <michal.simek@xilinx.com> | 2022-02-25 14:55:36 +0100 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2022-04-21 10:54:21 +0200 |
commit | 61a4e653cabd7d9e4a9e940d0786532725e73c0d (patch) | |
tree | 9dda516e5e50cd3cd10b789f954574b82b7649b7 /arch | |
parent | 95fee37be45f443a8a322ee7f6f78167b73f2abc (diff) | |
download | linux-61a4e653cabd7d9e4a9e940d0786532725e73c0d.tar.gz linux-61a4e653cabd7d9e4a9e940d0786532725e73c0d.tar.bz2 linux-61a4e653cabd7d9e4a9e940d0786532725e73c0d.zip |
microblaze: Use simple memmove/memcpy implementation from lib/string.c
This is based on previous commit ("microblaze: Use simple memset
implementation from lib/string.c") where generic memset implementation is
used when OPT_LIB_FUNCTION is not defined. The same change can be done for
memset/memcpy implementation where doesn't make sense to have generic
implementation in architecture code.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Link: https://lore.kernel.org/r/1f5cfc026a8a458f3e3134ab80f65bd4ac7e3e8e.1645797329.git.michal.simek@xilinx.com
Diffstat (limited to 'arch')
-rw-r--r-- | arch/microblaze/include/asm/string.h | 2 | ||||
-rw-r--r-- | arch/microblaze/lib/memcpy.c | 18 | ||||
-rw-r--r-- | arch/microblaze/lib/memmove.c | 29 |
3 files changed, 5 insertions, 44 deletions
diff --git a/arch/microblaze/include/asm/string.h b/arch/microblaze/include/asm/string.h index dbdb9eb4a733..8798ad2c132a 100644 --- a/arch/microblaze/include/asm/string.h +++ b/arch/microblaze/include/asm/string.h @@ -10,13 +10,13 @@ #ifdef CONFIG_OPT_LIB_FUNCTION #define __HAVE_ARCH_MEMSET -#endif #define __HAVE_ARCH_MEMCPY #define __HAVE_ARCH_MEMMOVE extern void *memset(void *, int, __kernel_size_t); extern void *memcpy(void *, const void *, __kernel_size_t); extern void *memmove(void *, const void *, __kernel_size_t); +#endif #endif /* __KERNEL__ */ diff --git a/arch/microblaze/lib/memcpy.c b/arch/microblaze/lib/memcpy.c index 63041fdf916d..9966dce55619 100644 --- a/arch/microblaze/lib/memcpy.c +++ b/arch/microblaze/lib/memcpy.c @@ -31,20 +31,7 @@ #include <linux/string.h> -#ifdef __HAVE_ARCH_MEMCPY -#ifndef CONFIG_OPT_LIB_FUNCTION -void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c) -{ - const char *src = v_src; - char *dst = v_dst; - - /* Simple, byte oriented memcpy. */ - while (c--) - *dst++ = *src++; - - return v_dst; -} -#else /* CONFIG_OPT_LIB_FUNCTION */ +#ifdef CONFIG_OPT_LIB_FUNCTION void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c) { const char *src = v_src; @@ -188,6 +175,5 @@ void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c) return v_dst; } -#endif /* CONFIG_OPT_LIB_FUNCTION */ EXPORT_SYMBOL(memcpy); -#endif /* __HAVE_ARCH_MEMCPY */ +#endif /* CONFIG_OPT_LIB_FUNCTION */ diff --git a/arch/microblaze/lib/memmove.c b/arch/microblaze/lib/memmove.c index 9862f6b1e59d..2e49d0ef1e07 100644 --- a/arch/microblaze/lib/memmove.c +++ b/arch/microblaze/lib/memmove.c @@ -30,31 +30,7 @@ #include <linux/compiler.h> #include <linux/string.h> -#ifdef __HAVE_ARCH_MEMMOVE -#ifndef CONFIG_OPT_LIB_FUNCTION -void *memmove(void *v_dst, const void *v_src, __kernel_size_t c) -{ - const char *src = v_src; - char *dst = v_dst; - - if (!c) - return v_dst; - - /* Use memcpy when source is higher than dest */ - if (v_dst <= v_src) - return memcpy(v_dst, v_src, c); - - /* copy backwards, from end to beginning */ - src += c; - dst += c; - - /* Simple, byte oriented memmove. */ - while (c--) - *--dst = *--src; - - return v_dst; -} -#else /* CONFIG_OPT_LIB_FUNCTION */ +#ifdef CONFIG_OPT_LIB_FUNCTION void *memmove(void *v_dst, const void *v_src, __kernel_size_t c) { const char *src = v_src; @@ -215,6 +191,5 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c) } return v_dst; } -#endif /* CONFIG_OPT_LIB_FUNCTION */ EXPORT_SYMBOL(memmove); -#endif /* __HAVE_ARCH_MEMMOVE */ +#endif /* CONFIG_OPT_LIB_FUNCTION */ |