1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_UACCESS_32_H
3 #define _ASM_X86_UACCESS_32_H
6 * User space memory access functions
8 #include <linux/string.h>
12 unsigned long __must_check __copy_user_ll
13 (void *to, const void *from, unsigned long n);
14 unsigned long __must_check __copy_from_user_ll_nocache_nozero
15 (void *to, const void __user *from, unsigned long n);
17 static __always_inline unsigned long __must_check
18 raw_copy_to_user(void __user *to, const void *from, unsigned long n)
20 return __copy_user_ll((__force void *)to, from, n);
23 static __always_inline unsigned long
24 raw_copy_from_user(void *to, const void __user *from, unsigned long n)
26 if (__builtin_constant_p(n)) {
32 __uaccess_begin_nospec();
33 __get_user_asm_nozero(*(u8 *)to, from, ret,
39 __uaccess_begin_nospec();
40 __get_user_asm_nozero(*(u16 *)to, from, ret,
46 __uaccess_begin_nospec();
47 __get_user_asm_nozero(*(u32 *)to, from, ret,
53 return __copy_user_ll(to, (__force const void *)from, n);
56 static __always_inline unsigned long
57 __copy_from_user_inatomic_nocache(void *to, const void __user *from,
60 return __copy_from_user_ll_nocache_nozero(to, from, n);
63 #endif /* _ASM_X86_UACCESS_32_H */