Lines Matching +full:x +full:- +full:rc
1 /* SPDX-License-Identifier: GPL-2.0 */
8 * Derived from "include/asm-i386/uaccess.h"
16 #include <asm/asm-extable.h>
21 #include <asm-generic/access_ok.h>
93 "1: xr %[rc],%[rc]\n" \
95 EX_TABLE_UA_STORE(0b, 2b, %[rc]) \
96 EX_TABLE_UA_STORE(1b, 2b, %[rc]) \
97 : [rc] "=&d" (__rc), [_to] "+Q" (*(to)) \
104 static __always_inline int __put_user_fn(void *x, void __user *ptr, unsigned long size) in __put_user_fn() argument
106 int rc; in __put_user_fn() local
110 rc = __put_user_asm((unsigned char __user *)ptr, in __put_user_fn()
111 (unsigned char *)x, in __put_user_fn()
115 rc = __put_user_asm((unsigned short __user *)ptr, in __put_user_fn()
116 (unsigned short *)x, in __put_user_fn()
120 rc = __put_user_asm((unsigned int __user *)ptr, in __put_user_fn()
121 (unsigned int *)x, in __put_user_fn()
125 rc = __put_user_asm((unsigned long __user *)ptr, in __put_user_fn()
126 (unsigned long *)x, in __put_user_fn()
133 return rc; in __put_user_fn()
149 "1: xr %[rc],%[rc]\n" \
151 EX_TABLE_UA_LOAD_MEM(0b, 2b, %[rc], %[_to], %[_ksize]) \
152 EX_TABLE_UA_LOAD_MEM(1b, 2b, %[rc], %[_to], %[_ksize]) \
153 : [rc] "=&d" (__rc), "=Q" (*(to)) \
161 static __always_inline int __get_user_fn(void *x, const void __user *ptr, unsigned long size) in __get_user_fn() argument
163 int rc; in __get_user_fn() local
167 rc = __get_user_asm((unsigned char *)x, in __get_user_fn()
172 rc = __get_user_asm((unsigned short *)x, in __get_user_fn()
177 rc = __get_user_asm((unsigned int *)x, in __get_user_fn()
182 rc = __get_user_asm((unsigned long *)x, in __get_user_fn()
190 return rc; in __get_user_fn()
194 * These are the main single-value transfer routines. They automatically
197 #define __put_user(x, ptr) \ argument
199 __typeof__(*(ptr)) __x = (x); \
200 int __pu_err = -EFAULT; \
217 #define put_user(x, ptr) \ argument
220 __put_user(x, ptr); \
223 #define __get_user(x, ptr) \ argument
225 int __gu_err = -EFAULT; \
233 (x) = *(__force __typeof__(*(ptr)) *)&__x; \
240 (x) = *(__force __typeof__(*(ptr)) *)&__x; \
247 (x) = *(__force __typeof__(*(ptr)) *)&__x; \
254 (x) = *(__force __typeof__(*(ptr)) *)&__x; \
264 #define get_user(x, ptr) \ argument
267 __get_user(x, ptr); \
298 "1: xr %[rc],%[rc]\n" \
300 EX_TABLE_UA_STORE(0b, 2b, %[rc]) \
301 EX_TABLE_UA_STORE(1b, 2b, %[rc]) \
302 : [rc] "=d" (__rc), [_to] "+Q" (*(to)) \
342 "1: xr %[rc],%[rc]\n" \
344 EX_TABLE_UA_LOAD_REG(0b, 2b, %[rc], %[_val]) \
345 EX_TABLE_UA_LOAD_REG(1b, 2b, %[rc], %[_val]) \
346 : [rc] "=d" (__rc), [_val] "=d" (val) \