162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef ___ASM_SPARC_STRING_H
362306a36Sopenharmony_ci#define ___ASM_SPARC_STRING_H
462306a36Sopenharmony_ci#if defined(__sparc__) && defined(__arch64__)
562306a36Sopenharmony_ci#include <asm/string_64.h>
662306a36Sopenharmony_ci#else
762306a36Sopenharmony_ci#include <asm/string_32.h>
862306a36Sopenharmony_ci#endif
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci/* First the mem*() things. */
1162306a36Sopenharmony_ci#define __HAVE_ARCH_MEMMOVE
1262306a36Sopenharmony_civoid *memmove(void *, const void *, __kernel_size_t);
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define __HAVE_ARCH_MEMCPY
1562306a36Sopenharmony_ci#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#define __HAVE_ARCH_MEMSET
1862306a36Sopenharmony_ci#define memset(s, c, count) __builtin_memset(s, c, count)
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#define __HAVE_ARCH_MEMSCAN
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define memscan(__arg0, __char, __arg2)						\
2362306a36Sopenharmony_ci({										\
2462306a36Sopenharmony_ci	void *__memscan_zero(void *, size_t);					\
2562306a36Sopenharmony_ci	void *__memscan_generic(void *, int, size_t);				\
2662306a36Sopenharmony_ci	void *__retval, *__addr = (__arg0);					\
2762306a36Sopenharmony_ci	size_t __size = (__arg2);						\
2862306a36Sopenharmony_ci										\
2962306a36Sopenharmony_ci	if(__builtin_constant_p(__char) && !(__char))				\
3062306a36Sopenharmony_ci		__retval = __memscan_zero(__addr, __size);			\
3162306a36Sopenharmony_ci	else									\
3262306a36Sopenharmony_ci		__retval = __memscan_generic(__addr, (__char), __size);		\
3362306a36Sopenharmony_ci										\
3462306a36Sopenharmony_ci	__retval;								\
3562306a36Sopenharmony_ci})
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#define __HAVE_ARCH_MEMCMP
3862306a36Sopenharmony_ciint memcmp(const void *,const void *,__kernel_size_t);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci/* Now the str*() stuff... */
4162306a36Sopenharmony_ci#define __HAVE_ARCH_STRLEN
4262306a36Sopenharmony_ci__kernel_size_t strlen(const char *);
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci#define __HAVE_ARCH_STRNCMP
4562306a36Sopenharmony_ciint strncmp(const char *, const char *, __kernel_size_t);
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci#endif
48