Linux-libre 5.4.48-gnu
[librecmc/linux-libre.git] / arch / sparc / include / asm / string.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef ___ASM_SPARC_STRING_H
3 #define ___ASM_SPARC_STRING_H
4 #if defined(__sparc__) && defined(__arch64__)
5 #include <asm/string_64.h>
6 #else
7 #include <asm/string_32.h>
8 #endif
9
10 /* First the mem*() things. */
11 #define __HAVE_ARCH_MEMMOVE
12 void *memmove(void *, const void *, __kernel_size_t);
13
14 #define __HAVE_ARCH_MEMCPY
15 #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
16
17 #define __HAVE_ARCH_MEMSET
18 #define memset(s, c, count) __builtin_memset(s, c, count)
19
20 #define __HAVE_ARCH_MEMSCAN
21
22 #define memscan(__arg0, __char, __arg2)                                         \
23 ({                                                                              \
24         void *__memscan_zero(void *, size_t);                                   \
25         void *__memscan_generic(void *, int, size_t);                           \
26         void *__retval, *__addr = (__arg0);                                     \
27         size_t __size = (__arg2);                                               \
28                                                                                 \
29         if(__builtin_constant_p(__char) && !(__char))                           \
30                 __retval = __memscan_zero(__addr, __size);                      \
31         else                                                                    \
32                 __retval = __memscan_generic(__addr, (__char), __size);         \
33                                                                                 \
34         __retval;                                                               \
35 })
36
37 #define __HAVE_ARCH_MEMCMP
38 int memcmp(const void *,const void *,__kernel_size_t);
39
40 #define __HAVE_ARCH_STRNCMP
41 int strncmp(const char *, const char *, __kernel_size_t);
42
43 #endif