|
@@ -106,26 +106,16 @@ void __retl_efault(void);
|
|
|
struct __large_struct { unsigned long buf[100]; };
|
|
|
#define __m(x) ((struct __large_struct *)(x))
|
|
|
|
|
|
-#define __put_user_nocheck(data, addr, size) ({ \
|
|
|
- register int __pu_ret; \
|
|
|
- switch (size) { \
|
|
|
- case 1: \
|
|
|
- __put_user_asm(data, b, addr, __pu_ret); \
|
|
|
- break; \
|
|
|
- case 2: \
|
|
|
- __put_user_asm(data, h, addr, __pu_ret); \
|
|
|
- break; \
|
|
|
- case 4: \
|
|
|
- __put_user_asm(data, w, addr, __pu_ret); \
|
|
|
- break; \
|
|
|
- case 8: \
|
|
|
- __put_user_asm(data, x, addr, __pu_ret); \
|
|
|
- break; \
|
|
|
- default: \
|
|
|
- __pu_ret = __put_user_bad(); \
|
|
|
- break; \
|
|
|
- } \
|
|
|
- __pu_ret; \
|
|
|
+#define __put_user_nocheck(data, addr, size) ({ \
|
|
|
+ register int __pu_ret; \
|
|
|
+ switch (size) { \
|
|
|
+ case 1: __put_user_asm(data, b, addr, __pu_ret); break; \
|
|
|
+ case 2: __put_user_asm(data, h, addr, __pu_ret); break; \
|
|
|
+ case 4: __put_user_asm(data, w, addr, __pu_ret); break; \
|
|
|
+ case 8: __put_user_asm(data, x, addr, __pu_ret); break; \
|
|
|
+ default: __pu_ret = __put_user_bad(); break; \
|
|
|
+ } \
|
|
|
+ __pu_ret; \
|
|
|
})
|
|
|
|
|
|
#define __put_user_asm(x, size, addr, ret) \
|
|
@@ -150,51 +140,35 @@ __asm__ __volatile__( \
|
|
|
|
|
|
int __put_user_bad(void);
|
|
|
|
|
|
-#define __get_user_nocheck(data, addr, size, type) ({ \
|
|
|
- register int __gu_ret; \
|
|
|
- register unsigned long __gu_val; \
|
|
|
- switch (size) { \
|
|
|
- case 1: \
|
|
|
- __get_user_asm(__gu_val, ub, addr, __gu_ret); \
|
|
|
- break; \
|
|
|
- case 2: \
|
|
|
- __get_user_asm(__gu_val, uh, addr, __gu_ret); \
|
|
|
- break; \
|
|
|
- case 4: \
|
|
|
- __get_user_asm(__gu_val, uw, addr, __gu_ret); \
|
|
|
- break; \
|
|
|
- case 8: \
|
|
|
- __get_user_asm(__gu_val, x, addr, __gu_ret); \
|
|
|
- break; \
|
|
|
- default: \
|
|
|
- __gu_val = 0; \
|
|
|
- __gu_ret = __get_user_bad(); \
|
|
|
- break; \
|
|
|
- } \
|
|
|
- data = (__force type) __gu_val; \
|
|
|
- __gu_ret; \
|
|
|
+#define __get_user_nocheck(data, addr, size, type) ({ \
|
|
|
+ register int __gu_ret; \
|
|
|
+ register unsigned long __gu_val; \
|
|
|
+ switch (size) { \
|
|
|
+ case 1: __get_user_asm(__gu_val, ub, addr, __gu_ret); break; \
|
|
|
+ case 2: __get_user_asm(__gu_val, uh, addr, __gu_ret); break; \
|
|
|
+ case 4: __get_user_asm(__gu_val, uw, addr, __gu_ret); break; \
|
|
|
+ case 8: __get_user_asm(__gu_val, x, addr, __gu_ret); break; \
|
|
|
+ default: \
|
|
|
+ __gu_val = 0; \
|
|
|
+ __gu_ret = __get_user_bad(); \
|
|
|
+ break; \
|
|
|
+ } \
|
|
|
+ data = (__force type) __gu_val; \
|
|
|
+ __gu_ret; \
|
|
|
})
|
|
|
|
|
|
-#define __get_user_nocheck_ret(data, addr, size, type, retval) ({ \
|
|
|
- register unsigned long __gu_val __asm__ ("l1"); \
|
|
|
- switch (size) { \
|
|
|
- case 1: \
|
|
|
- __get_user_asm_ret(__gu_val, ub, addr, retval); \
|
|
|
- break; \
|
|
|
- case 2: \
|
|
|
- __get_user_asm_ret(__gu_val, uh, addr, retval); \
|
|
|
- break; \
|
|
|
- case 4: \
|
|
|
- __get_user_asm_ret(__gu_val, uw, addr, retval); \
|
|
|
- break; \
|
|
|
- case 8: \
|
|
|
- __get_user_asm_ret(__gu_val, x, addr, retval); \
|
|
|
- break; \
|
|
|
- default: \
|
|
|
- if (__get_user_bad()) \
|
|
|
- return retval; \
|
|
|
- } \
|
|
|
- data = (__force type) __gu_val; \
|
|
|
+#define __get_user_nocheck_ret(data, addr, size, type, retval) ({ \
|
|
|
+ register unsigned long __gu_val __asm__ ("l1"); \
|
|
|
+ switch (size) { \
|
|
|
+ case 1: __get_user_asm_ret(__gu_val, ub, addr, retval); break; \
|
|
|
+ case 2: __get_user_asm_ret(__gu_val, uh, addr, retval); break; \
|
|
|
+ case 4: __get_user_asm_ret(__gu_val, uw, addr, retval); break; \
|
|
|
+ case 8: __get_user_asm_ret(__gu_val, x, addr, retval); break; \
|
|
|
+ default: \
|
|
|
+ if (__get_user_bad()) \
|
|
|
+ return retval; \
|
|
|
+ } \
|
|
|
+ data = (__force type) __gu_val; \
|
|
|
})
|
|
|
|
|
|
#define __get_user_asm(x, size, addr, ret) \
|