Lines Matching refs:ptr

124 #define __get_user_x(size,ret,x,ptr) \
127 :"0" (ptr))
134 * @ptr: Source address, in user space.
142 * @ptr must have pointer-to-simple-variable type, and the result of
143 * dereferencing @ptr must be assignable to @x without a cast.
148 #define get_user(x,ptr) \
151 __chk_user_ptr(ptr); \
152 switch(sizeof (*(ptr))) { \
153 case 1: __get_user_x(1,__ret_gu,__val_gu,ptr); break; \
154 case 2: __get_user_x(2,__ret_gu,__val_gu,ptr); break; \
155 case 4: __get_user_x(4,__ret_gu,__val_gu,ptr); break; \
156 default: __get_user_x(X,__ret_gu,__val_gu,ptr); break; \
158 (x) = (__typeof__(*(ptr)))__val_gu; \
173 #define __put_user_1(x, ptr) __asm__ __volatile__("call __put_user_1":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
174 #define __put_user_2(x, ptr) __asm__ __volatile__("call __put_user_2":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
175 #define __put_user_4(x, ptr) __asm__ __volatile__("call __put_user_4":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
176 #define __put_user_8(x, ptr) __asm__ __volatile__("call __put_user_8":"=a" (__ret_pu):"A" ((typeof(*(ptr)))(x)), "c" (ptr))
177 #define __put_user_X(x, ptr) __asm__ __volatile__("call __put_user_X":"=a" (__ret_pu):"c" (ptr))
182 * @ptr: Destination address, in user space.
190 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
191 * to the result of dereferencing @ptr.
197 #define put_user(x,ptr) \
199 __typeof__(*(ptr)) __pu_val; \
200 __chk_user_ptr(ptr); \
202 switch(sizeof(*(ptr))) { \
203 case 1: __put_user_1(__pu_val, ptr); break; \
204 case 2: __put_user_2(__pu_val, ptr); break; \
205 case 4: __put_user_4(__pu_val, ptr); break; \
206 case 8: __put_user_8(__pu_val, ptr); break; \
207 default:__put_user_X(__pu_val, ptr); break; \
213 #define put_user(x,ptr) \
216 __typeof__(*(ptr)) __pus_tmp = x; \
218 if(unlikely(__copy_to_user_ll(ptr, &__pus_tmp, \
219 sizeof(*(ptr))) != 0)) \
230 * @ptr: Source address, in user space.
238 * @ptr must have pointer-to-simple-variable type, and the result of
239 * dereferencing @ptr must be assignable to @x without a cast.
247 #define __get_user(x,ptr) \
248 __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
254 * @ptr: Destination address, in user space.
262 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
263 * to the result of dereferencing @ptr.
270 #define __put_user(x,ptr) \
271 __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
273 #define __put_user_nocheck(x,ptr,size) \
276 __put_user_size((x),(ptr),(size),__pu_err,-EFAULT); \
300 #define __put_user_size(x,ptr,size,retval,errret) \
303 __chk_user_ptr(ptr); \
305 case 1: __put_user_asm(x,ptr,retval,"b","b","iq",errret);break; \
306 case 2: __put_user_asm(x,ptr,retval,"w","w","ir",errret);break; \
307 case 4: __put_user_asm(x,ptr,retval,"l","","ir",errret); break; \
308 case 8: __put_user_u64((__typeof__(*ptr))(x),ptr,retval); break;\
315 #define __put_user_size(x,ptr,size,retval,errret) \
317 __typeof__(*(ptr)) __pus_tmp = x; \
320 if(unlikely(__copy_to_user_ll(ptr, &__pus_tmp, size) != 0)) \
349 #define __get_user_nocheck(x,ptr,size) \
353 __get_user_size(__gu_val,(ptr),(size),__gu_err,-EFAULT);\
354 (x) = (__typeof__(*(ptr)))__gu_val; \
360 #define __get_user_size(x,ptr,size,retval,errret) \
363 __chk_user_ptr(ptr); \
365 case 1: __get_user_asm(x,ptr,retval,"b","b","=q",errret);break; \
366 case 2: __get_user_asm(x,ptr,retval,"w","w","=r",errret);break; \
367 case 4: __get_user_asm(x,ptr,retval,"l","","=r",errret);break; \