162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef _ASM_X86_UACCESS_32_H
362306a36Sopenharmony_ci#define _ASM_X86_UACCESS_32_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci/*
662306a36Sopenharmony_ci * User space memory access functions
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci#include <linux/string.h>
962306a36Sopenharmony_ci#include <asm/asm.h>
1062306a36Sopenharmony_ci#include <asm/page.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciunsigned long __must_check __copy_user_ll
1362306a36Sopenharmony_ci		(void *to, const void *from, unsigned long n);
1462306a36Sopenharmony_ciunsigned long __must_check __copy_from_user_ll_nocache_nozero
1562306a36Sopenharmony_ci		(void *to, const void __user *from, unsigned long n);
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_cistatic __always_inline unsigned long __must_check
1862306a36Sopenharmony_ciraw_copy_to_user(void __user *to, const void *from, unsigned long n)
1962306a36Sopenharmony_ci{
2062306a36Sopenharmony_ci	return __copy_user_ll((__force void *)to, from, n);
2162306a36Sopenharmony_ci}
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cistatic __always_inline unsigned long
2462306a36Sopenharmony_ciraw_copy_from_user(void *to, const void __user *from, unsigned long n)
2562306a36Sopenharmony_ci{
2662306a36Sopenharmony_ci	return __copy_user_ll(to, (__force const void *)from, n);
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cistatic __always_inline unsigned long
3062306a36Sopenharmony_ci__copy_from_user_inatomic_nocache(void *to, const void __user *from,
3162306a36Sopenharmony_ci				  unsigned long n)
3262306a36Sopenharmony_ci{
3362306a36Sopenharmony_ci       return __copy_from_user_ll_nocache_nozero(to, from, n);
3462306a36Sopenharmony_ci}
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciunsigned long __must_check clear_user(void __user *mem, unsigned long len);
3762306a36Sopenharmony_ciunsigned long __must_check __clear_user(void __user *mem, unsigned long len);
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#endif /* _ASM_X86_UACCESS_32_H */
40