1*4882a593Smuzhiyun #ifndef __ASM_ARM_STRING_H 2*4882a593Smuzhiyun #define __ASM_ARM_STRING_H 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <config.h> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun /* 7*4882a593Smuzhiyun * We don't do inline string functions, since the 8*4882a593Smuzhiyun * optimised inline asm versions are not small. 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #undef __HAVE_ARCH_STRRCHR 12*4882a593Smuzhiyun extern char * strrchr(const char * s, int c); 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #undef __HAVE_ARCH_STRCHR 15*4882a593Smuzhiyun extern char * strchr(const char * s, int c); 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #if CONFIG_IS_ENABLED(USE_ARCH_MEMCPY) 18*4882a593Smuzhiyun #define __HAVE_ARCH_MEMCPY 19*4882a593Smuzhiyun #endif 20*4882a593Smuzhiyun extern void * memcpy(void *, const void *, __kernel_size_t); 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #undef __HAVE_ARCH_MEMMOVE 23*4882a593Smuzhiyun extern void * memmove(void *, const void *, __kernel_size_t); 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #undef __HAVE_ARCH_MEMCHR 26*4882a593Smuzhiyun extern void * memchr(const void *, int, __kernel_size_t); 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #undef __HAVE_ARCH_MEMZERO 29*4882a593Smuzhiyun #if CONFIG_IS_ENABLED(USE_ARCH_MEMSET) 30*4882a593Smuzhiyun #define __HAVE_ARCH_MEMSET 31*4882a593Smuzhiyun #endif 32*4882a593Smuzhiyun extern void * memset(void *, int, __kernel_size_t); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #if 0 35*4882a593Smuzhiyun extern void __memzero(void *ptr, __kernel_size_t n); 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define memset(p,v,n) \ 38*4882a593Smuzhiyun ({ \ 39*4882a593Smuzhiyun if ((n) != 0) { \ 40*4882a593Smuzhiyun if (__builtin_constant_p((v)) && (v) == 0) \ 41*4882a593Smuzhiyun __memzero((p),(n)); \ 42*4882a593Smuzhiyun else \ 43*4882a593Smuzhiyun memset((p),(v),(n)); \ 44*4882a593Smuzhiyun } \ 45*4882a593Smuzhiyun (p); \ 46*4882a593Smuzhiyun }) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define memzero(p,n) ({ if ((n) != 0) __memzero((p),(n)); (p); }) 49*4882a593Smuzhiyun #else 50*4882a593Smuzhiyun extern void memzero(void *ptr, __kernel_size_t n); 51*4882a593Smuzhiyun #endif 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #endif 54