Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091/* SPDX-License-Identifier: GPL-2.0 */#ifndef _ASM_POWERPC_STRING_H#define _ASM_POWERPC_STRING_H
#ifdef __KERNEL__
#ifndef CONFIG_KASAN#define __HAVE_ARCH_STRNCMP#define __HAVE_ARCH_MEMCHR#define __HAVE_ARCH_MEMCMP#define __HAVE_ARCH_MEMSET16#endif
#define __HAVE_ARCH_MEMSET#define __HAVE_ARCH_MEMCPY#define __HAVE_ARCH_MEMMOVE#define __HAVE_ARCH_MEMCPY_FLUSHCACHE
extern char * strcpy(char *,const char *);extern __kernel_size_t strlen(const char *);extern int strcmp(const char *,const char *);extern int strncmp(const char *, const char *, __kernel_size_t);extern char * strcat(char *, const char *);extern void * memset(void *,int,__kernel_size_t);extern void * memcpy(void *,const void *,__kernel_size_t);extern void * memmove(void *,const void *,__kernel_size_t);extern int memcmp(const void *,const void *,__kernel_size_t);extern void * memchr(const void *,int,__kernel_size_t);void memcpy_flushcache(void *dest, const void *src, size_t size);
#ifdef CONFIG_KASAN/* __mem variants are used by KASAN to implement instrumented meminstrinsics. */#ifdef CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX#define __memset memset#define __memcpy memcpy#define __memmove memmove#else /* CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX */void *__memset(void *s, int c, __kernel_size_t count);void *__memcpy(void *to, const void *from, __kernel_size_t n);void *__memmove(void *to, const void *from, __kernel_size_t n);#ifndef __SANITIZE_ADDRESS__/* * For files that are not instrumented (e.g. mm/slub.c) we * should use not instrumented version of mem* functions. */#define memcpy(dst, src, len) __memcpy(dst, src, len)#define memmove(dst, src, len) __memmove(dst, src, len)#define memset(s, c, n) __memset(s, c, n)
#ifndef __NO_FORTIFY#define __NO_FORTIFY /* FORTIFY_SOURCE uses __builtin_memcpy, etc. */#endif#endif /* !__SANITIZE_ADDRESS__ */#endif /* CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX */#endif /* CONFIG_KASAN */
#ifdef CONFIG_PPC64#ifndef CONFIG_KASAN#define __HAVE_ARCH_MEMSET32#define __HAVE_ARCH_MEMSET64
extern void *__memset16(uint16_t *, uint16_t v, __kernel_size_t);extern void *__memset32(uint32_t *, uint32_t v, __kernel_size_t);extern void *__memset64(uint64_t *, uint64_t v, __kernel_size_t);
static inline void *memset16(uint16_t *p, uint16_t v, __kernel_size_t n){ return __memset16(p, v, n * 2);}
static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n){ return __memset32(p, v, n * 4);}
static inline void *memset64(uint64_t *p, uint64_t v, __kernel_size_t n){ return __memset64(p, v, n * 8);}#endif#else#ifndef CONFIG_KASAN#define __HAVE_ARCH_STRLEN#endif
extern void *memset16(uint16_t *, uint16_t, __kernel_size_t);#endif#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_STRING_H */