1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ASM_X86_UACCESS_32_H
3#define _ASM_X86_UACCESS_32_H
4
5/*
6 * User space memory access functions
7 */
8#include <linux/string.h>
9#include <asm/asm.h>
10#include <asm/page.h>
11
12unsigned long __must_check __copy_user_ll
13		(void *to, const void *from, unsigned long n);
14unsigned long __must_check __copy_from_user_ll_nocache_nozero
15		(void *to, const void __user *from, unsigned long n);
16
17static __always_inline unsigned long __must_check
18raw_copy_to_user(void __user *to, const void *from, unsigned long n)
19{
20	return __copy_user_ll((__force void *)to, from, n);
21}
22
23static __always_inline unsigned long
24raw_copy_from_user(void *to, const void __user *from, unsigned long n)
25{
26	return __copy_user_ll(to, (__force const void *)from, n);
27}
28
29static __always_inline unsigned long
30__copy_from_user_inatomic_nocache(void *to, const void __user *from,
31				  unsigned long n)
32{
33       return __copy_from_user_ll_nocache_nozero(to, from, n);
34}
35
36unsigned long __must_check clear_user(void __user *mem, unsigned long len);
37unsigned long __must_check __clear_user(void __user *mem, unsigned long len);
38
39#endif /* _ASM_X86_UACCESS_32_H */
40