xref: /rk3399_rockchip-uboot/arch/arm/include/asm/string.h (revision 085be482f6c62614ddbe51000a09db9dec360e90)
1819833afSPeter Tyser #ifndef __ASM_ARM_STRING_H
2819833afSPeter Tyser #define __ASM_ARM_STRING_H
3819833afSPeter Tyser 
4d8834a13SMatthias Weisser #include <config.h>
5d8834a13SMatthias Weisser 
6819833afSPeter Tyser /*
7819833afSPeter Tyser  * We don't do inline string functions, since the
8819833afSPeter Tyser  * optimised inline asm versions are not small.
9819833afSPeter Tyser  */
10819833afSPeter Tyser 
11819833afSPeter Tyser #undef __HAVE_ARCH_STRRCHR
12819833afSPeter Tyser extern char * strrchr(const char * s, int c);
13819833afSPeter Tyser 
14819833afSPeter Tyser #undef __HAVE_ARCH_STRCHR
15819833afSPeter Tyser extern char * strchr(const char * s, int c);
16819833afSPeter Tyser 
17*085be482SMasahiro Yamada #if CONFIG_IS_ENABLED(USE_ARCH_MEMCPY)
18d8834a13SMatthias Weisser #define __HAVE_ARCH_MEMCPY
19d8834a13SMatthias Weisser #endif
20819833afSPeter Tyser extern void * memcpy(void *, const void *, __kernel_size_t);
21819833afSPeter Tyser 
22819833afSPeter Tyser #undef __HAVE_ARCH_MEMMOVE
23819833afSPeter Tyser extern void * memmove(void *, const void *, __kernel_size_t);
24819833afSPeter Tyser 
25819833afSPeter Tyser #undef __HAVE_ARCH_MEMCHR
26819833afSPeter Tyser extern void * memchr(const void *, int, __kernel_size_t);
27819833afSPeter Tyser 
28819833afSPeter Tyser #undef __HAVE_ARCH_MEMZERO
29*085be482SMasahiro Yamada #if CONFIG_IS_ENABLED(USE_ARCH_MEMSET)
30d8834a13SMatthias Weisser #define __HAVE_ARCH_MEMSET
31d8834a13SMatthias Weisser #endif
32819833afSPeter Tyser extern void * memset(void *, int, __kernel_size_t);
33819833afSPeter Tyser 
34819833afSPeter Tyser #if 0
35819833afSPeter Tyser extern void __memzero(void *ptr, __kernel_size_t n);
36819833afSPeter Tyser 
37819833afSPeter Tyser #define memset(p,v,n)							\
38819833afSPeter Tyser 	({								\
39819833afSPeter Tyser 		if ((n) != 0) {						\
40819833afSPeter Tyser 			if (__builtin_constant_p((v)) && (v) == 0)	\
41819833afSPeter Tyser 				__memzero((p),(n));			\
42819833afSPeter Tyser 			else						\
43819833afSPeter Tyser 				memset((p),(v),(n));			\
44819833afSPeter Tyser 		}							\
45819833afSPeter Tyser 		(p);							\
46819833afSPeter Tyser 	})
47819833afSPeter Tyser 
48819833afSPeter Tyser #define memzero(p,n) ({ if ((n) != 0) __memzero((p),(n)); (p); })
49819833afSPeter Tyser #else
50819833afSPeter Tyser extern void memzero(void *ptr, __kernel_size_t n);
51819833afSPeter Tyser #endif
52819833afSPeter Tyser 
53819833afSPeter Tyser #endif
54