diff options
Diffstat (limited to 'arch/sparc/include/asm/uaccess_32.h')
-rw-r--r-- | arch/sparc/include/asm/uaccess_32.h | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h index 64ee103dc29d..57aca2792d29 100644 --- a/arch/sparc/include/asm/uaccess_32.h +++ b/arch/sparc/include/asm/uaccess_32.h | |||
@@ -205,31 +205,6 @@ int __put_user_bad(void); | |||
205 | __gu_ret; \ | 205 | __gu_ret; \ |
206 | }) | 206 | }) |
207 | 207 | ||
208 | #define __get_user_check_ret(x, addr, size, type, retval) ({ \ | ||
209 | register unsigned long __gu_val __asm__ ("l1"); \ | ||
210 | if (__access_ok(addr, size)) { \ | ||
211 | switch (size) { \ | ||
212 | case 1: \ | ||
213 | __get_user_asm_ret(__gu_val, ub, addr, retval); \ | ||
214 | break; \ | ||
215 | case 2: \ | ||
216 | __get_user_asm_ret(__gu_val, uh, addr, retval); \ | ||
217 | break; \ | ||
218 | case 4: \ | ||
219 | __get_user_asm_ret(__gu_val, , addr, retval); \ | ||
220 | break; \ | ||
221 | case 8: \ | ||
222 | __get_user_asm_ret(__gu_val, d, addr, retval); \ | ||
223 | break; \ | ||
224 | default: \ | ||
225 | if (__get_user_bad()) \ | ||
226 | return retval; \ | ||
227 | } \ | ||
228 | x = (__force type) __gu_val; \ | ||
229 | } else \ | ||
230 | return retval; \ | ||
231 | }) | ||
232 | |||
233 | #define __get_user_nocheck(x, addr, size, type) ({ \ | 208 | #define __get_user_nocheck(x, addr, size, type) ({ \ |
234 | register int __gu_ret; \ | 209 | register int __gu_ret; \ |
235 | register unsigned long __gu_val; \ | 210 | register unsigned long __gu_val; \ |
@@ -247,20 +222,6 @@ int __put_user_bad(void); | |||
247 | __gu_ret; \ | 222 | __gu_ret; \ |
248 | }) | 223 | }) |
249 | 224 | ||
250 | #define __get_user_nocheck_ret(x, addr, size, type, retval) ({ \ | ||
251 | register unsigned long __gu_val __asm__ ("l1"); \ | ||
252 | switch (size) { \ | ||
253 | case 1: __get_user_asm_ret(__gu_val, ub, addr, retval); break; \ | ||
254 | case 2: __get_user_asm_ret(__gu_val, uh, addr, retval); break; \ | ||
255 | case 4: __get_user_asm_ret(__gu_val, , addr, retval); break; \ | ||
256 | case 8: __get_user_asm_ret(__gu_val, d, addr, retval); break; \ | ||
257 | default: \ | ||
258 | if (__get_user_bad()) \ | ||
259 | return retval; \ | ||
260 | } \ | ||
261 | x = (__force type) __gu_val; \ | ||
262 | }) | ||
263 | |||
264 | #define __get_user_asm(x, size, addr, ret) \ | 225 | #define __get_user_asm(x, size, addr, ret) \ |
265 | __asm__ __volatile__( \ | 226 | __asm__ __volatile__( \ |
266 | "/* Get user asm, inline. */\n" \ | 227 | "/* Get user asm, inline. */\n" \ |
@@ -281,32 +242,6 @@ __asm__ __volatile__( \ | |||
281 | : "=&r" (ret), "=&r" (x) : "m" (*__m(addr)), \ | 242 | : "=&r" (ret), "=&r" (x) : "m" (*__m(addr)), \ |
282 | "i" (-EFAULT)) | 243 | "i" (-EFAULT)) |
283 | 244 | ||
284 | #define __get_user_asm_ret(x, size, addr, retval) \ | ||
285 | if (__builtin_constant_p(retval) && retval == -EFAULT) \ | ||
286 | __asm__ __volatile__( \ | ||
287 | "/* Get user asm ret, inline. */\n" \ | ||
288 | "1:\t" "ld"#size " %1, %0\n\n\t" \ | ||
289 | ".section __ex_table,#alloc\n\t" \ | ||
290 | ".align 4\n\t" \ | ||
291 | ".word 1b,__ret_efault\n\n\t" \ | ||
292 | ".previous\n\t" \ | ||
293 | : "=&r" (x) : "m" (*__m(addr))); \ | ||
294 | else \ | ||
295 | __asm__ __volatile__( \ | ||
296 | "/* Get user asm ret, inline. */\n" \ | ||
297 | "1:\t" "ld"#size " %1, %0\n\n\t" \ | ||
298 | ".section .fixup,#alloc,#execinstr\n\t" \ | ||
299 | ".align 4\n" \ | ||
300 | "3:\n\t" \ | ||
301 | "ret\n\t" \ | ||
302 | " restore %%g0, %2, %%o0\n\n\t" \ | ||
303 | ".previous\n\t" \ | ||
304 | ".section __ex_table,#alloc\n\t" \ | ||
305 | ".align 4\n\t" \ | ||
306 | ".word 1b, 3b\n\n\t" \ | ||
307 | ".previous\n\t" \ | ||
308 | : "=&r" (x) : "m" (*__m(addr)), "i" (retval)) | ||
309 | |||
310 | int __get_user_bad(void); | 245 | int __get_user_bad(void); |
311 | 246 | ||
312 | unsigned long __copy_user(void __user *to, const void __user *from, unsigned long size); | 247 | unsigned long __copy_user(void __user *to, const void __user *from, unsigned long size); |