summaryrefslogtreecommitdiffstats
path: root/include/asm-alpha/string.h
blob: 6ef1f4120593d6e61d49c860622dce7cef41e1b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef __ALPHA_STRING_H__
#define __ALPHA_STRING_H__

#ifdef __KERNEL__

extern void * __constant_c_memset(void *, unsigned long, long);
extern void * __memset(void *, char, size_t);

/*
 * Ugh. Gcc uses "bcopy()" internally for structure assignments.
 */
#define __HAVE_ARCH_BCOPY

/*
 * Define "memcpy()" to something else, otherwise gcc will
 * corrupt that too into a "bcopy".  Also, some day we might
 * want to do a separate inlined constant-size memcpy (for 8
 * and 16 byte user<->kernel structure copying).
 */
#define __HAVE_ARCH_MEMCPY
extern void * __memcpy(void *, const void *, size_t);
#define memcpy __memcpy

#define __HAVE_ARCH_MEMSET
#define memset(s, c, count) \
(__builtin_constant_p(c) ? \
 __constant_c_memset((s),(0x0101010101010101UL*(unsigned char)c),(count)) : \
 __memset((s),(c),(count)))

#define __HAVE_ARCH_STRCPY
#define __HAVE_ARCH_STRNCPY
#define __HAVE_ARCH_STRCAT
#define __HAVE_ARCH_STRNCAT
#define __HAVE_ARCH_STRCHR
#define __HAVE_ARCH_STRRCHR
#define __HAVE_ARCH_STRLEN

#endif /* __KERNEL__ */

#endif /* __ALPHA_STRING_H__ */