home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sparc64 / string.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.2 KB  |  84 lines

  1. /* $Id: string.h,v 1.20 2001/09/27 04:36:24 kanoj Exp $
  2.  * string.h: External definitions for optimized assembly string
  3.  *           routines for the Linux Kernel.
  4.  *
  5.  * Copyright (C) 1995,1996 David S. Miller (davem@caip.rutgers.edu)
  6.  * Copyright (C) 1996,1997,1999 Jakub Jelinek (jakub@redhat.com)
  7.  */
  8.  
  9. #ifndef __SPARC64_STRING_H__
  10. #define __SPARC64_STRING_H__
  11.  
  12. /* Really, userland/ksyms should not see any of this stuff. */
  13.  
  14. #ifdef __KERNEL__
  15.  
  16. #include <asm/asi.h>
  17.  
  18. extern void *__memset(void *,int,__kernel_size_t);
  19.  
  20. #ifndef EXPORT_SYMTAB_STROPS
  21.  
  22. /* First the mem*() things. */
  23. #define __HAVE_ARCH_MEMMOVE
  24. extern void *memmove(void *, const void *, __kernel_size_t);
  25.  
  26. #define __HAVE_ARCH_MEMCPY
  27. extern void *memcpy(void *, const void *, __kernel_size_t);
  28.  
  29. #define __HAVE_ARCH_MEMSET
  30. extern void *__builtin_memset(void *,int,__kernel_size_t);
  31.  
  32. static inline void *__constant_memset(void *s, int c, __kernel_size_t count)
  33. {
  34.     extern __kernel_size_t __bzero(void *, __kernel_size_t);
  35.  
  36.     if (!c) {
  37.         __bzero(s, count);
  38.         return s;
  39.     } else
  40.         return __memset(s, c, count);
  41. }
  42.  
  43. #undef memset
  44. #define memset(s, c, count) \
  45. ((__builtin_constant_p(count) && (count) <= 32) ? \
  46.  __builtin_memset((s), (c), (count)) : \
  47.  (__builtin_constant_p(c) ? \
  48.   __constant_memset((s), (c), (count)) : \
  49.   __memset((s), (c), (count))))
  50.  
  51. #define __HAVE_ARCH_MEMSCAN
  52.  
  53. #undef memscan
  54. #define memscan(__arg0, __char, __arg2)                    \
  55. ({                                    \
  56.     extern void *__memscan_zero(void *, size_t);            \
  57.     extern void *__memscan_generic(void *, int, size_t);        \
  58.     void *__retval, *__addr = (__arg0);                \
  59.     size_t __size = (__arg2);                    \
  60.                                     \
  61.     if(__builtin_constant_p(__char) && !(__char))            \
  62.         __retval = __memscan_zero(__addr, __size);        \
  63.     else                                \
  64.         __retval = __memscan_generic(__addr, (__char), __size);    \
  65.                                     \
  66.     __retval;                            \
  67. })
  68.  
  69. #define __HAVE_ARCH_MEMCMP
  70. extern int memcmp(const void *,const void *,__kernel_size_t);
  71.  
  72. /* Now the str*() stuff... */
  73. #define __HAVE_ARCH_STRLEN
  74. extern __kernel_size_t strlen(const char *);
  75.  
  76. #define __HAVE_ARCH_STRNCMP
  77. extern int strncmp(const char *, const char *, __kernel_size_t);
  78.  
  79. #endif /* !EXPORT_SYMTAB_STROPS */
  80.  
  81. #endif /* __KERNEL__ */
  82.  
  83. #endif /* !(__SPARC64_STRING_H__) */
  84.