Lines Matching defs:ptr

76 #define do_get_user_call(fn,x,ptr)					\
79 register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \
80 __chk_user_ptr(ptr); \
84 : "0" (ptr), "i" (sizeof(*(ptr)))); \
86 (x) = (__force __typeof__(*(ptr))) __val_gu; \
93 * @ptr: Source address, in user space.
102 * @ptr must have pointer-to-simple-variable type, and the result of
103 * dereferencing @ptr must be assignable to @x without a cast.
108 #define get_user(x,ptr) ({ might_fault(); do_get_user_call(get_user,x,ptr); })
113 * @ptr: Source address, in user space.
122 * @ptr must have pointer-to-simple-variable type, and the result of
123 * dereferencing @ptr must be assignable to @x without a cast.
131 #define __get_user(x,ptr) do_get_user_call(get_user_nocheck,x,ptr)
145 #define __put_user_goto_u64(x, ptr, label) \
146 __put_user_goto(x, ptr, "q", "er", label)
165 * ptr must be evaluated and assigned to the temporary __ptr_pu before
167 * involved in the ptr expression (possibly implicitly generated due
170 #define do_put_user_call(fn,x,ptr) \
174 register __typeof__(*(ptr)) __val_pu asm("%"_ASM_AX); \
175 __typeof__(*(ptr)) __x = (x); /* eval x once */ \
176 __typeof__(ptr) __ptr = (ptr); /* eval ptr once */ \
185 [size] "i" (sizeof(*(ptr))) \
187 instrument_put_user(__x, __ptr, sizeof(*(ptr))); \
194 * @ptr: Destination address, in user space.
203 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
204 * to the result of dereferencing @ptr.
208 #define put_user(x, ptr) ({ might_fault(); do_put_user_call(put_user,x,ptr); })
213 * @ptr: Destination address, in user space.
222 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
223 * to the result of dereferencing @ptr.
230 #define __put_user(x, ptr) do_put_user_call(put_user_nocheck,x,ptr)
232 #define __put_user_size(x, ptr, size, label) \
234 __typeof__(*(ptr)) __x = (x); /* eval x once */ \
235 __typeof__(ptr) __ptr = (ptr); /* eval ptr once */ \
259 #define __get_user_asm_u64(x, ptr, label) do { \
262 __gu_ptr = (const void __user *)(ptr); \
268 #define __get_user_asm_u64(x, ptr, label) \
269 __get_user_asm(x, ptr, "q", "=r", label)
272 #define __get_user_size(x, ptr, size, label) \
274 __chk_user_ptr(ptr); \
278 __get_user_asm(x_u8__, ptr, "b", "=q", label); \
283 __get_user_asm(x, ptr, "w", "=r", label); \
286 __get_user_asm(x, ptr, "l", "=r", label); \
289 __get_user_asm_u64(x, ptr, label); \
308 #define __get_user_asm_u64(x, ptr, retval) \
310 __typeof__(ptr) __ptr = (ptr); \
329 #define __get_user_asm_u64(x, ptr, retval) \
330 __get_user_asm(x, ptr, retval, "q")
333 #define __get_user_size(x, ptr, size, retval) \
338 __chk_user_ptr(ptr); \
341 __get_user_asm(x_u8__, ptr, retval, "b"); \
345 __get_user_asm(x, ptr, retval, "w"); \
348 __get_user_asm(x, ptr, retval, "l"); \
351 __get_user_asm_u64(x, ptr, retval); \
379 "1: " LOCK_PREFIX "cmpxchg"itype" %[new], %[ptr]\n"\
382 [ptr] "+m" (*_ptr), \
398 "1: " LOCK_PREFIX "cmpxchg8b %[ptr]\n" \
402 [ptr] "+m" (*_ptr) \
419 "1: " LOCK_PREFIX "cmpxchg"itype" %[new], %[ptr]\n"\
426 [ptr] "+m" (*_ptr), \
450 "1: " LOCK_PREFIX "cmpxchg8b %[ptr]\n" \
458 [ptr] "+m" (*_ptr) \
519 static __must_check __always_inline bool user_access_begin(const void __user *ptr, size_t len)
521 if (unlikely(!access_ok(ptr,len)))
532 #define unsafe_put_user(x, ptr, label) \
533 __put_user_size((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), label)
536 #define unsafe_get_user(x, ptr, err_label) \
538 __inttype(*(ptr)) __gu_val; \
539 __get_user_size(__gu_val, (ptr), sizeof(*(ptr)), err_label); \
540 (x) = (__force __typeof__(*(ptr)))__gu_val; \
543 #define unsafe_get_user(x, ptr, err_label) \
546 __inttype(*(ptr)) __gu_val; \
547 __get_user_size(__gu_val, (ptr), sizeof(*(ptr)), __gu_err); \
548 (x) = (__force __typeof__(*(ptr)))__gu_val; \