| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef __ASM_ARM_STRING_H | 
 | 2 | #define __ASM_ARM_STRING_H | 
 | 3 |  | 
 | 4 | /* | 
 | 5 |  * We don't do inline string functions, since the | 
 | 6 |  * optimised inline asm versions are not small. | 
 | 7 |  */ | 
 | 8 |  | 
 | 9 | #define __HAVE_ARCH_STRRCHR | 
 | 10 | extern char * strrchr(const char * s, int c); | 
 | 11 |  | 
 | 12 | #define __HAVE_ARCH_STRCHR | 
 | 13 | extern char * strchr(const char * s, int c); | 
 | 14 |  | 
 | 15 | #define __HAVE_ARCH_MEMCPY | 
 | 16 | extern void * memcpy(void *, const void *, __kernel_size_t); | 
 | 17 |  | 
 | 18 | #define __HAVE_ARCH_MEMMOVE | 
 | 19 | extern void * memmove(void *, const void *, __kernel_size_t); | 
 | 20 |  | 
 | 21 | #define __HAVE_ARCH_MEMCHR | 
 | 22 | extern void * memchr(const void *, int, __kernel_size_t); | 
 | 23 |  | 
 | 24 | #define __HAVE_ARCH_MEMZERO | 
 | 25 | #define __HAVE_ARCH_MEMSET | 
 | 26 | extern void * memset(void *, int, __kernel_size_t); | 
 | 27 |  | 
 | 28 | extern void __memzero(void *ptr, __kernel_size_t n); | 
 | 29 |  | 
 | 30 | #define memset(p,v,n)							\ | 
 | 31 | 	({								\ | 
| Deepak Saxena | 2fac6f3 | 2005-04-25 23:40:05 +0100 | [diff] [blame] | 32 | 	 	void *__p = (p); size_t __n = n;			\ | 
 | 33 | 		if ((__n) != 0) {					\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 34 | 			if (__builtin_constant_p((v)) && (v) == 0)	\ | 
| Deepak Saxena | 2fac6f3 | 2005-04-25 23:40:05 +0100 | [diff] [blame] | 35 | 				__memzero((__p),(__n));			\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | 			else						\ | 
| Deepak Saxena | 2fac6f3 | 2005-04-25 23:40:05 +0100 | [diff] [blame] | 37 | 				memset((__p),(v),(__n));		\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 38 | 		}							\ | 
| Deepak Saxena | 2fac6f3 | 2005-04-25 23:40:05 +0100 | [diff] [blame] | 39 | 		(__p);							\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 40 | 	}) | 
 | 41 |  | 
| Deepak Saxena | 2fac6f3 | 2005-04-25 23:40:05 +0100 | [diff] [blame] | 42 | #define memzero(p,n) 							\ | 
 | 43 | 	({ 								\ | 
 | 44 | 	 	void *__p = (p); size_t __n = n;			\ | 
 | 45 | 	 	if ((__n) != 0) 					\ | 
 | 46 | 	 		__memzero((__p),(__n)); 			\ | 
 | 47 | 	 	(__p); 							\ | 
 | 48 | 	 }) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 49 |  | 
 | 50 | #endif |