aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/include/asm/uaccess_32.h96
1 files changed, 35 insertions, 61 deletions
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
index f96656209a78..64ee103dc29d 100644
--- a/arch/sparc/include/asm/uaccess_32.h
+++ b/arch/sparc/include/asm/uaccess_32.h
@@ -142,24 +142,14 @@ struct __large_struct { unsigned long buf[100]; };
142 __pu_ret; \ 142 __pu_ret; \
143}) 143})
144 144
145#define __put_user_nocheck(x, addr, size) ({ \ 145#define __put_user_nocheck(x, addr, size) ({ \
146 register int __pu_ret; \ 146 register int __pu_ret; \
147 switch (size) { \ 147 switch (size) { \
148 case 1: \ 148 case 1: __put_user_asm(x, b, addr, __pu_ret); break; \
149 __put_user_asm(x, b, addr, __pu_ret); \ 149 case 2: __put_user_asm(x, h, addr, __pu_ret); break; \
150 break; \ 150 case 4: __put_user_asm(x, , addr, __pu_ret); break; \
151 case 2: \ 151 case 8: __put_user_asm(x, d, addr, __pu_ret); break; \
152 __put_user_asm(x, h, addr, __pu_ret); \ 152 default: __pu_ret = __put_user_bad(); break; \
153 break; \
154 case 4: \
155 __put_user_asm(x, , addr, __pu_ret); \
156 break; \
157 case 8: \
158 __put_user_asm(x, d, addr, __pu_ret); \
159 break; \
160 default: \
161 __pu_ret = __put_user_bad(); \
162 break; \
163 } \ 153 } \
164 __pu_ret; \ 154 __pu_ret; \
165}) 155})
@@ -240,51 +230,35 @@ int __put_user_bad(void);
240 return retval; \ 230 return retval; \
241}) 231})
242 232
243#define __get_user_nocheck(x, addr, size, type) ({ \ 233#define __get_user_nocheck(x, addr, size, type) ({ \
244 register int __gu_ret; \ 234 register int __gu_ret; \
245 register unsigned long __gu_val; \ 235 register unsigned long __gu_val; \
246 switch (size) { \ 236 switch (size) { \
247 case 1: \ 237 case 1: __get_user_asm(__gu_val, ub, addr, __gu_ret); break; \
248 __get_user_asm(__gu_val, ub, addr, __gu_ret); \ 238 case 2: __get_user_asm(__gu_val, uh, addr, __gu_ret); break; \
249 break; \ 239 case 4: __get_user_asm(__gu_val, , addr, __gu_ret); break; \
250 case 2: \ 240 case 8: __get_user_asm(__gu_val, d, addr, __gu_ret); break; \
251 __get_user_asm(__gu_val, uh, addr, __gu_ret); \ 241 default: \
252 break; \ 242 __gu_val = 0; \
253 case 4: \ 243 __gu_ret = __get_user_bad(); \
254 __get_user_asm(__gu_val, , addr, __gu_ret); \ 244 break; \
255 break; \ 245 } \
256 case 8: \ 246 x = (__force type) __gu_val; \
257 __get_user_asm(__gu_val, d, addr, __gu_ret); \ 247 __gu_ret; \
258 break; \
259 default: \
260 __gu_val = 0; \
261 __gu_ret = __get_user_bad(); \
262 break; \
263 } \
264 x = (__force type) __gu_val; \
265 __gu_ret; \
266}) 248})
267 249
268#define __get_user_nocheck_ret(x, addr, size, type, retval) ({ \ 250#define __get_user_nocheck_ret(x, addr, size, type, retval) ({ \
269 register unsigned long __gu_val __asm__ ("l1"); \ 251 register unsigned long __gu_val __asm__ ("l1"); \
270 switch (size) { \ 252 switch (size) { \
271 case 1: \ 253 case 1: __get_user_asm_ret(__gu_val, ub, addr, retval); break; \
272 __get_user_asm_ret(__gu_val, ub, addr, retval); \ 254 case 2: __get_user_asm_ret(__gu_val, uh, addr, retval); break; \
273 break; \ 255 case 4: __get_user_asm_ret(__gu_val, , addr, retval); break; \
274 case 2: \ 256 case 8: __get_user_asm_ret(__gu_val, d, addr, retval); break; \
275 __get_user_asm_ret(__gu_val, uh, addr, retval); \ 257 default: \
276 break; \ 258 if (__get_user_bad()) \
277 case 4: \ 259 return retval; \
278 __get_user_asm_ret(__gu_val, , addr, retval); \ 260 } \
279 break; \ 261 x = (__force type) __gu_val; \
280 case 8: \
281 __get_user_asm_ret(__gu_val, d, addr, retval); \
282 break; \
283 default: \
284 if (__get_user_bad()) \
285 return retval; \
286 } \
287 x = (__force type) __gu_val; \
288}) 262})
289 263
290#define __get_user_asm(x, size, addr, ret) \ 264#define __get_user_asm(x, size, addr, ret) \