xref: /openbmc/linux/include/asm-generic/flat.h (revision 0898782247ae533d1f4e47a06bc5d4870931b284)
17a8998c9SChristoph Hellwig /* SPDX-License-Identifier: GPL-2.0 */
27a8998c9SChristoph Hellwig #ifndef _ASM_GENERIC_FLAT_H
37a8998c9SChristoph Hellwig #define _ASM_GENERIC_FLAT_H
47a8998c9SChristoph Hellwig 
57a8998c9SChristoph Hellwig #include <linux/uaccess.h>
67a8998c9SChristoph Hellwig 
flat_get_addr_from_rp(u32 __user * rp,u32 relval,u32 flags,u32 * addr)77a8998c9SChristoph Hellwig static inline int flat_get_addr_from_rp(u32 __user *rp, u32 relval, u32 flags,
8*6843d8aaSChristoph Hellwig 		u32 *addr)
97a8998c9SChristoph Hellwig {
107a8998c9SChristoph Hellwig #ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
117a8998c9SChristoph Hellwig 	return copy_from_user(addr, rp, 4) ? -EFAULT : 0;
127a8998c9SChristoph Hellwig #else
137a8998c9SChristoph Hellwig 	return get_user(*addr, rp);
147a8998c9SChristoph Hellwig #endif
157a8998c9SChristoph Hellwig }
167a8998c9SChristoph Hellwig 
flat_put_addr_at_rp(u32 __user * rp,u32 addr,u32 rel)177a8998c9SChristoph Hellwig static inline int flat_put_addr_at_rp(u32 __user *rp, u32 addr, u32 rel)
187a8998c9SChristoph Hellwig {
197a8998c9SChristoph Hellwig #ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
207a8998c9SChristoph Hellwig 	return copy_to_user(rp, &addr, 4) ? -EFAULT : 0;
217a8998c9SChristoph Hellwig #else
227a8998c9SChristoph Hellwig 	return put_user(addr, rp);
237a8998c9SChristoph Hellwig #endif
247a8998c9SChristoph Hellwig }
257a8998c9SChristoph Hellwig 
267a8998c9SChristoph Hellwig #endif /* _ASM_GENERIC_FLAT_H */
27