diff options
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/include/asm/uaccess_32.h | 96 |
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) \ |