patch-2.4.3 linux/include/asm-arm/proc-armv/uaccess.h

Next file: linux/include/asm-arm/proc-fns.h
Previous file: linux/include/asm-arm/pgtable.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.2/linux/include/asm-arm/proc-armv/uaccess.h linux/include/asm-arm/proc-armv/uaccess.h
@@ -24,7 +24,7 @@
 /* We use 33-bit arithmetic here... */
 #define __range_ok(addr,size) ({ \
 	unsigned long flag, sum; \
-	__asm__ __volatile__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \
+	__asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \
 		: "=&r" (flag), "=&r" (sum) \
 		: "r" (addr), "Ir" (size), "0" (current->addr_limit) \
 		: "cc"); \
@@ -32,7 +32,7 @@
 
 #define __addr_ok(addr) ({ \
 	unsigned long flag; \
-	__asm__ __volatile__("cmp %2, %0; movlo %0, #0" \
+	__asm__("cmp %2, %0; movlo %0, #0" \
 		: "=&r" (flag) \
 		: "0" (current->addr_limit), "r" (addr) \
 		: "cc"); \
@@ -57,24 +57,8 @@
 #define __put_user_asm_half(x,addr,err)				\
 ({								\
 	unsigned long __temp = (unsigned long)(x);		\
-	__asm__ __volatile__(					\
-	"1:	strbt	%1,[%3],#0\n"				\
-	"2:	strbt	%2,[%4],#0\n"				\
-	"3:\n"							\
-	"	.section .fixup,\"ax\"\n"			\
-	"	.align	2\n"					\
-	"4:	mov	%0, %5\n"				\
-	"	b	3b\n"					\
-	"	.previous\n"					\
-	"	.section __ex_table,\"a\"\n"			\
-	"	.align	3\n"					\
-	"	.long	1b, 4b\n"				\
-	"	.long	2b, 4b\n"				\
-	"	.previous"					\
-	: "=r" (err)						\
-	: "r" (__temp), "r" (__temp >> 8),			\
-	  "r" (addr), "r" ((int)(addr) + 1),			\
-	   "i" (-EFAULT), "0" (err));				\
+	__put_user_asm_byte(__temp, addr, err);			\
+	__put_user_asm_byte(__temp >> 8, (int)(addr) + 1, err);	\
 })
 
 #define __put_user_asm_word(x,addr,err)				\
@@ -112,26 +96,10 @@
 
 #define __get_user_asm_half(x,addr,err)				\
 ({								\
-	unsigned long __temp;					\
-	__asm__ __volatile__(					\
-	"1:	ldrbt	%1,[%3],#0\n"				\
-	"2:	ldrbt	%2,[%4],#0\n"				\
-	"	orr	%1, %1, %2, lsl #8\n"			\
-	"3:\n"							\
-	"	.section .fixup,\"ax\"\n"			\
-	"	.align	2\n"					\
-	"4:	mov	%0, %5\n"				\
-	"	mov	%1, #0\n"				\
-	"	b	3b\n"					\
-	"	.previous\n"					\
-	"	.section __ex_table,\"a\"\n"			\
-	"	.align	3\n"					\
-	"	.long	1b, 4b\n"				\
-	"	.long	2b, 4b\n"				\
-	"	.previous"					\
-	: "=r" (err), "=r" (x), "=&r" (__temp)			\
-	: "r" (addr), "r" ((int)(addr) + 1),			\
-	   "i" (-EFAULT), "0" (err));				\
+	unsigned long __b1, __b2;				\
+	__get_user_asm_byte(__b1, addr, err);			\
+	__get_user_asm_byte(__b2, (int)(addr) + 1, err);	\
+	(x) = __b1 | (__b2 << 8);				\
 })
 
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)