~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/m68k/include/asm/string.h

Version: ~ [ linux-5.7-rc7 ] ~ [ linux-5.6.14 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.42 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.124 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.181 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.224 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.224 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.84 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _M68K_STRING_H_
  2 #define _M68K_STRING_H_
  3 
  4 #include <linux/types.h>
  5 #include <linux/compiler.h>
  6 
  7 #define __HAVE_ARCH_STRNLEN
  8 static inline size_t strnlen(const char *s, size_t count)
  9 {
 10         const char *sc = s;
 11 
 12         asm volatile ("\n"
 13                 "1:     subq.l  #1,%1\n"
 14                 "       jcs     2f\n"
 15                 "       tst.b   (%0)+\n"
 16                 "       jne     1b\n"
 17                 "       subq.l  #1,%0\n"
 18                 "2:"
 19                 : "+a" (sc), "+d" (count));
 20         return sc - s;
 21 }
 22 
 23 #define __HAVE_ARCH_STRNCPY
 24 static inline char *strncpy(char *dest, const char *src, size_t n)
 25 {
 26         char *xdest = dest;
 27 
 28         asm volatile ("\n"
 29                 "       jra     2f\n"
 30                 "1:     move.b  (%1),(%0)+\n"
 31                 "       jeq     2f\n"
 32                 "       addq.l  #1,%1\n"
 33                 "2:     subq.l  #1,%2\n"
 34                 "       jcc     1b\n"
 35                 : "+a" (dest), "+a" (src), "+d" (n)
 36                 : : "memory");
 37         return xdest;
 38 }
 39 
 40 #ifndef CONFIG_COLDFIRE
 41 #define __HAVE_ARCH_STRCMP
 42 static inline int strcmp(const char *cs, const char *ct)
 43 {
 44         char res;
 45 
 46         asm ("\n"
 47                 "1:     move.b  (%0)+,%2\n"     /* get *cs */
 48                 "       cmp.b   (%1)+,%2\n"     /* compare a byte */
 49                 "       jne     2f\n"           /* not equal, break out */
 50                 "       tst.b   %2\n"           /* at end of cs? */
 51                 "       jne     1b\n"           /* no, keep going */
 52                 "       jra     3f\n"           /* strings are equal */
 53                 "2:     sub.b   -(%1),%2\n"     /* *cs - *ct */
 54                 "3:"
 55                 : "+a" (cs), "+a" (ct), "=d" (res));
 56         return res;
 57 }
 58 #endif /* CONFIG_COLDFIRE */
 59 
 60 #define __HAVE_ARCH_MEMMOVE
 61 extern void *memmove(void *, const void *, __kernel_size_t);
 62 
 63 #define memcmp(d, s, n) __builtin_memcmp(d, s, n)
 64 
 65 #define __HAVE_ARCH_MEMSET
 66 extern void *memset(void *, int, __kernel_size_t);
 67 #define memset(d, c, n) __builtin_memset(d, c, n)
 68 
 69 #define __HAVE_ARCH_MEMCPY
 70 extern void *memcpy(void *, const void *, __kernel_size_t);
 71 #define memcpy(d, s, n) __builtin_memcpy(d, s, n)
 72 
 73 #endif /* _M68K_STRING_H_ */
 74 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp