diff options
Diffstat (limited to 'arch/arc/include/asm/uaccess.h')
| -rw-r--r-- | arch/arc/include/asm/uaccess.h | 72 | 
1 files changed, 0 insertions, 72 deletions
diff --git a/arch/arc/include/asm/uaccess.h b/arch/arc/include/asm/uaccess.h index ea40ec7f6cae..783bfdb3bfa3 100644 --- a/arch/arc/include/asm/uaccess.h +++ b/arch/arc/include/asm/uaccess.h @@ -655,88 +655,16 @@ static inline unsigned long __arc_clear_user(void __user *to, unsigned long n)  	return res;  } -static inline long -__arc_strncpy_from_user(char *dst, const char __user *src, long count) -{ -	long res = 0; -	char val; - -	if (count == 0) -		return 0; - -	__asm__ __volatile__( -	"	mov	lp_count, %5		\n" -	"	lp	3f			\n" -	"1:	ldb.ab  %3, [%2, 1]		\n" -	"	breq.d	%3, 0, 3f               \n" -	"	stb.ab  %3, [%1, 1]		\n" -	"	add	%0, %0, 1	# Num of NON NULL bytes copied	\n" -	"3:								\n" -	"	.section .fixup, \"ax\"		\n" -	"	.align 4			\n" -	"4:	mov %0, %4		# sets @res as -EFAULT	\n" -	"	j   3b				\n" -	"	.previous			\n" -	"	.section __ex_table, \"a\"	\n" -	"	.align 4			\n" -	"	.word   1b, 4b			\n" -	"	.previous			\n" -	: "+r"(res), "+r"(dst), "+r"(src), "=r"(val) -	: "g"(-EFAULT), "r"(count) -	: "lp_count", "memory"); - -	return res; -} - -static inline long __arc_strnlen_user(const char __user *s, long n) -{ -	long res, tmp1, cnt; -	char val; - -	__asm__ __volatile__( -	"	mov %2, %1			\n" -	"1:	ldb.ab  %3, [%0, 1]		\n" -	"	breq.d  %3, 0, 2f		\n" -	"	sub.f   %2, %2, 1		\n" -	"	bnz 1b				\n" -	"	sub %2, %2, 1			\n" -	"2:	sub %0, %1, %2			\n" -	"3:	;nop				\n" -	"	.section .fixup, \"ax\"		\n" -	"	.align 4			\n" -	"4:	mov %0, 0			\n" -	"	j   3b				\n" -	"	.previous			\n" -	"	.section __ex_table, \"a\"	\n" -	"	.align 4			\n" -	"	.word 1b, 4b			\n" -	"	.previous			\n" -	: "=r"(res), "=r"(tmp1), "=r"(cnt), "=r"(val) -	: "0"(s), "1"(n) -	: "memory"); - -	return res; -} -  #ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE  #define INLINE_COPY_TO_USER  #define INLINE_COPY_FROM_USER  #define __clear_user(d, n)		__arc_clear_user(d, n) -#define __strncpy_from_user(d, s, n)	__arc_strncpy_from_user(d, s, n) -#define __strnlen_user(s, n)		__arc_strnlen_user(s, n)  #else  extern unsigned long arc_clear_user_noinline(void __user *to,  		unsigned long n); -extern long arc_strncpy_from_user_noinline (char *dst, const char __user *src, -		long count); -extern long arc_strnlen_user_noinline(const char __user *src, long n); -  #define __clear_user(d, n)		arc_clear_user_noinline(d, n) -#define __strncpy_from_user(d, s, n)	arc_strncpy_from_user_noinline(d, s, n) -#define __strnlen_user(s, n)		arc_strnlen_user_noinline(s, n) -  #endif  #include <asm/segment.h>  |