|
@@ -186,7 +186,7 @@ extern int __get_user_bad(void);
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_X86_32
|
|
#ifdef CONFIG_X86_32
|
|
-#define __put_user_u64(x, addr, err) \
|
|
|
|
|
|
+#define __put_user_asm_u64(x, addr, err) \
|
|
asm volatile("1: movl %%eax,0(%2)\n" \
|
|
asm volatile("1: movl %%eax,0(%2)\n" \
|
|
"2: movl %%edx,4(%2)\n" \
|
|
"2: movl %%edx,4(%2)\n" \
|
|
"3:\n" \
|
|
"3:\n" \
|
|
@@ -203,7 +203,7 @@ extern int __get_user_bad(void);
|
|
asm volatile("call __put_user_8" : "=a" (__ret_pu) \
|
|
asm volatile("call __put_user_8" : "=a" (__ret_pu) \
|
|
: "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
|
: "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
|
#else
|
|
#else
|
|
-#define __put_user_u64(x, ptr, retval) \
|
|
|
|
|
|
+#define __put_user_asm_u64(x, ptr, retval) \
|
|
__put_user_asm(x, ptr, retval, "q", "", "Zr", -EFAULT)
|
|
__put_user_asm(x, ptr, retval, "q", "", "Zr", -EFAULT)
|
|
#define __put_user_x8(x, ptr, __ret_pu) __put_user_x(8, x, ptr, __ret_pu)
|
|
#define __put_user_x8(x, ptr, __ret_pu) __put_user_x(8, x, ptr, __ret_pu)
|
|
#endif
|
|
#endif
|
|
@@ -279,7 +279,7 @@ do { \
|
|
__put_user_asm(x, ptr, retval, "l", "k", "ir", errret); \
|
|
__put_user_asm(x, ptr, retval, "l", "k", "ir", errret); \
|
|
break; \
|
|
break; \
|
|
case 8: \
|
|
case 8: \
|
|
- __put_user_u64((__typeof__(*ptr))(x), ptr, retval); \
|
|
|
|
|
|
+ __put_user_asm_u64((__typeof__(*ptr))(x), ptr, retval); \
|
|
break; \
|
|
break; \
|
|
default: \
|
|
default: \
|
|
__put_user_bad(); \
|
|
__put_user_bad(); \
|