string.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (C) 2013 Regents of the University of California
  4. */
  5. #ifndef _ASM_RISCV_STRING_H
  6. #define _ASM_RISCV_STRING_H
  7. #include <linux/types.h>
  8. #include <linux/linkage.h>
  9. #define __HAVE_ARCH_MEMSET
  10. extern asmlinkage void *memset(void *, int, size_t);
  11. extern asmlinkage void *__memset(void *, int, size_t);
  12. #define __HAVE_ARCH_MEMCPY
  13. extern asmlinkage void *memcpy(void *, const void *, size_t);
  14. extern asmlinkage void *__memcpy(void *, const void *, size_t);
  15. #define __HAVE_ARCH_MEMMOVE
  16. extern asmlinkage void *memmove(void *, const void *, size_t);
  17. extern asmlinkage void *__memmove(void *, const void *, size_t);
  18. #if !(defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
  19. #define __HAVE_ARCH_STRCMP
  20. extern asmlinkage int strcmp(const char *cs, const char *ct);
  21. #define __HAVE_ARCH_STRLEN
  22. extern asmlinkage __kernel_size_t strlen(const char *);
  23. #define __HAVE_ARCH_STRNCMP
  24. extern asmlinkage int strncmp(const char *cs, const char *ct, size_t count);
  25. #endif
  26. /* For those files which don't want to check by kasan. */
  27. #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
  28. #define memcpy(dst, src, len) __memcpy(dst, src, len)
  29. #define memset(s, c, n) __memset(s, c, n)
  30. #define memmove(dst, src, len) __memmove(dst, src, len)
  31. #ifndef __NO_FORTIFY
  32. #define __NO_FORTIFY /* FORTIFY_SOURCE uses __builtin_memcpy, etc. */
  33. #endif
  34. #endif
  35. #endif /* _ASM_RISCV_STRING_H */