diff options
Diffstat (limited to 'include/asm-sparc64/uaccess.h')
-rw-r--r-- | include/asm-sparc64/uaccess.h | 46 |
1 files changed, 1 insertions, 45 deletions
diff --git a/include/asm-sparc64/uaccess.h b/include/asm-sparc64/uaccess.h index c91d1e38eac6..afe236ba555b 100644 --- a/include/asm-sparc64/uaccess.h +++ b/include/asm-sparc64/uaccess.h | |||
@@ -114,16 +114,6 @@ case 8: __put_user_asm(data,x,addr,__pu_ret); break; \ | |||
114 | default: __pu_ret = __put_user_bad(); break; \ | 114 | default: __pu_ret = __put_user_bad(); break; \ |
115 | } __pu_ret; }) | 115 | } __pu_ret; }) |
116 | 116 | ||
117 | #define __put_user_nocheck_ret(data,addr,size,retval) ({ \ | ||
118 | register int __foo __asm__ ("l1"); \ | ||
119 | switch (size) { \ | ||
120 | case 1: __put_user_asm_ret(data,b,addr,retval,__foo); break; \ | ||
121 | case 2: __put_user_asm_ret(data,h,addr,retval,__foo); break; \ | ||
122 | case 4: __put_user_asm_ret(data,w,addr,retval,__foo); break; \ | ||
123 | case 8: __put_user_asm_ret(data,x,addr,retval,__foo); break; \ | ||
124 | default: if (__put_user_bad()) return retval; break; \ | ||
125 | } }) | ||
126 | |||
127 | #define __put_user_asm(x,size,addr,ret) \ | 117 | #define __put_user_asm(x,size,addr,ret) \ |
128 | __asm__ __volatile__( \ | 118 | __asm__ __volatile__( \ |
129 | "/* Put user asm, inline. */\n" \ | 119 | "/* Put user asm, inline. */\n" \ |
@@ -143,33 +133,6 @@ __asm__ __volatile__( \ | |||
143 | : "=r" (ret) : "r" (x), "r" (__m(addr)), \ | 133 | : "=r" (ret) : "r" (x), "r" (__m(addr)), \ |
144 | "i" (-EFAULT)) | 134 | "i" (-EFAULT)) |
145 | 135 | ||
146 | #define __put_user_asm_ret(x,size,addr,ret,foo) \ | ||
147 | if (__builtin_constant_p(ret) && ret == -EFAULT) \ | ||
148 | __asm__ __volatile__( \ | ||
149 | "/* Put user asm ret, inline. */\n" \ | ||
150 | "1:\t" "st"#size "a %1, [%2] %%asi\n\n\t" \ | ||
151 | ".section __ex_table,\"a\"\n\t" \ | ||
152 | ".align 4\n\t" \ | ||
153 | ".word 1b, __ret_efault\n\n\t" \ | ||
154 | ".previous\n\n\t" \ | ||
155 | : "=r" (foo) : "r" (x), "r" (__m(addr))); \ | ||
156 | else \ | ||
157 | __asm__ __volatile__( \ | ||
158 | "/* Put user asm ret, inline. */\n" \ | ||
159 | "1:\t" "st"#size "a %1, [%2] %%asi\n\n\t" \ | ||
160 | ".section .fixup,#alloc,#execinstr\n\t" \ | ||
161 | ".align 4\n" \ | ||
162 | "3:\n\t" \ | ||
163 | "ret\n\t" \ | ||
164 | " restore %%g0, %3, %%o0\n\n\t" \ | ||
165 | ".previous\n\t" \ | ||
166 | ".section __ex_table,\"a\"\n\t" \ | ||
167 | ".align 4\n\t" \ | ||
168 | ".word 1b, 3b\n\n\t" \ | ||
169 | ".previous\n\n\t" \ | ||
170 | : "=r" (foo) : "r" (x), "r" (__m(addr)), \ | ||
171 | "i" (ret)) | ||
172 | |||
173 | extern int __put_user_bad(void); | 136 | extern int __put_user_bad(void); |
174 | 137 | ||
175 | #define __get_user_nocheck(data,addr,size,type) ({ \ | 138 | #define __get_user_nocheck(data,addr,size,type) ({ \ |
@@ -289,14 +252,7 @@ copy_in_user(void __user *to, void __user *from, unsigned long size) | |||
289 | } | 252 | } |
290 | #define __copy_in_user copy_in_user | 253 | #define __copy_in_user copy_in_user |
291 | 254 | ||
292 | extern unsigned long __must_check __bzero_noasi(void __user *, unsigned long); | 255 | extern unsigned long __must_check __clear_user(void __user *, unsigned long); |
293 | |||
294 | static inline unsigned long __must_check | ||
295 | __clear_user(void __user *addr, unsigned long size) | ||
296 | { | ||
297 | |||
298 | return __bzero_noasi(addr, size); | ||
299 | } | ||
300 | 256 | ||
301 | #define clear_user __clear_user | 257 | #define clear_user __clear_user |
302 | 258 | ||