diff options
Diffstat (limited to 'arch/arm/include/asm/uaccess.h')
| -rw-r--r-- | arch/arm/include/asm/uaccess.h | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index 7e1f76027f6..75d95799b6e 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@ -19,6 +19,13 @@  #include <asm/unified.h>  #include <asm/compiler.h> +#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS +#include <asm-generic/uaccess-unaligned.h> +#else +#define __get_user_unaligned __get_user +#define __put_user_unaligned __put_user +#endif +  #define VERIFY_READ 0  #define VERIFY_WRITE 1 @@ -164,8 +171,9 @@ extern int __put_user_8(void *, unsigned long long);  #define __put_user_check(x,p)							\  	({								\  		unsigned long __limit = current_thread_info()->addr_limit - 1; \ +		const typeof(*(p)) __user *__tmp_p = (p);		\  		register const typeof(*(p)) __r2 asm("r2") = (x);	\ -		register const typeof(*(p)) __user *__p asm("r0") = (p);\ +		register const typeof(*(p)) __user *__p asm("r0") = __tmp_p; \  		register unsigned long __l asm("r1") = __limit;		\  		register int __e asm("r0");				\  		switch (sizeof(*(__p))) {				\  | 
