mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00:00
riscv: assembler versions of memcpy, memmove, memset
Provide optimized versions of memcpy(), memmove(), memset() copied from the Linux kernel. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
This commit is contained in:
parent
f709a0b6f9
commit
8f0dc4cfd1
6 changed files with 383 additions and 22 deletions
|
@ -19,31 +19,25 @@
|
|||
|
||||
#undef __HAVE_ARCH_STRRCHR
|
||||
#undef __HAVE_ARCH_STRCHR
|
||||
#undef __HAVE_ARCH_MEMCPY
|
||||
#undef __HAVE_ARCH_MEMMOVE
|
||||
#undef __HAVE_ARCH_MEMCHR
|
||||
#undef __HAVE_ARCH_MEMZERO
|
||||
#undef __HAVE_ARCH_MEMSET
|
||||
|
||||
#ifdef CONFIG_MARCO_MEMSET
|
||||
#define memset(_p, _v, _n) \
|
||||
(typeof(_p) (p) = (_p); \
|
||||
typeof(_v) (v) = (_v); \
|
||||
typeof(_n) (n) = (_n); \
|
||||
{ \
|
||||
if ((n) != 0) { \
|
||||
if (__builtin_constant_p((v)) && (v) == 0) \
|
||||
__memzero((p), (n)); \
|
||||
else \
|
||||
memset((p), (v), (n)); \
|
||||
} \
|
||||
(p); \
|
||||
})
|
||||
|
||||
#define memzero(_p, _n) \
|
||||
(typeof(_p) (p) = (_p); \
|
||||
typeof(_n) (n) = (_n); \
|
||||
{ if ((n) != 0) __memzero((p), (n)); (p); })
|
||||
#undef __HAVE_ARCH_MEMCPY
|
||||
#if CONFIG_IS_ENABLED(USE_ARCH_MEMCPY)
|
||||
#define __HAVE_ARCH_MEMCPY
|
||||
#endif
|
||||
extern void *memcpy(void *, const void *, __kernel_size_t);
|
||||
|
||||
#undef __HAVE_ARCH_MEMMOVE
|
||||
#if CONFIG_IS_ENABLED(USE_ARCH_MEMMOVE)
|
||||
#define __HAVE_ARCH_MEMMOVE
|
||||
#endif
|
||||
extern void *memmove(void *, const void *, __kernel_size_t);
|
||||
|
||||
#undef __HAVE_ARCH_MEMZERO
|
||||
#if CONFIG_IS_ENABLED(USE_ARCH_MEMSET)
|
||||
#define __HAVE_ARCH_MEMSET
|
||||
#endif
|
||||
extern void *memset(void *, int, __kernel_size_t);
|
||||
|
||||
#endif /* __ASM_RISCV_STRING_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue