.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0 */ |
---|
1 | 2 | #ifndef __ASM_SH_STRING_H |
---|
2 | 3 | #define __ASM_SH_STRING_H |
---|
3 | | - |
---|
4 | | -#ifdef __KERNEL__ |
---|
5 | 4 | |
---|
6 | 5 | /* |
---|
7 | 6 | * Copyright (C) 1999 Niibe Yutaka |
---|
.. | .. |
---|
23 | 22 | : "=r" (__dest), "=r" (__src), "=&z" (__dummy) |
---|
24 | 23 | : "0" (__dest), "1" (__src) |
---|
25 | 24 | : "memory", "t"); |
---|
26 | | - |
---|
27 | | - return __xdest; |
---|
28 | | -} |
---|
29 | | - |
---|
30 | | -#define __HAVE_ARCH_STRNCPY |
---|
31 | | -static inline char *strncpy(char *__dest, const char *__src, size_t __n) |
---|
32 | | -{ |
---|
33 | | - register char *__xdest = __dest; |
---|
34 | | - unsigned long __dummy; |
---|
35 | | - |
---|
36 | | - if (__n == 0) |
---|
37 | | - return __xdest; |
---|
38 | | - |
---|
39 | | - __asm__ __volatile__( |
---|
40 | | - "1:\n" |
---|
41 | | - "mov.b @%1+, %2\n\t" |
---|
42 | | - "mov.b %2, @%0\n\t" |
---|
43 | | - "cmp/eq #0, %2\n\t" |
---|
44 | | - "bt/s 2f\n\t" |
---|
45 | | - " cmp/eq %5,%1\n\t" |
---|
46 | | - "bf/s 1b\n\t" |
---|
47 | | - " add #1, %0\n" |
---|
48 | | - "2:" |
---|
49 | | - : "=r" (__dest), "=r" (__src), "=&z" (__dummy) |
---|
50 | | - : "0" (__dest), "1" (__src), "r" (__src+__n) |
---|
51 | | - : "memory", "t"); |
---|
52 | 25 | |
---|
53 | 26 | return __xdest; |
---|
54 | 27 | } |
---|
.. | .. |
---|
125 | 98 | |
---|
126 | 99 | #define __HAVE_ARCH_STRLEN |
---|
127 | 100 | extern size_t strlen(const char *); |
---|
128 | | - |
---|
129 | | -#endif /* __KERNEL__ */ |
---|
130 | 101 | |
---|
131 | 102 | #endif /* __ASM_SH_STRING_H */ |
---|