xref: /openbmc/linux/include/asm-generic/uaccess.h (revision 64c70b1c)
1 #ifndef _ASM_GENERIC_UACCESS_H_
2 #define _ASM_GENERIC_UACCESS_H_
3 
4 /*
5  * This macro should be used instead of __get_user() when accessing
6  * values at locations that are not known to be aligned.
7  */
8 #define __get_user_unaligned(x, ptr)					\
9 ({									\
10 	__typeof__ (*(ptr)) __x;					\
11 	__copy_from_user(&__x, (ptr), sizeof(*(ptr))) ? -EFAULT : 0;	\
12 	(x) = __x;							\
13 })
14 
15 
16 /*
17  * This macro should be used instead of __put_user() when accessing
18  * values at locations that are not known to be aligned.
19  */
20 #define __put_user_unaligned(x, ptr)					\
21 ({									\
22 	__typeof__ (*(ptr)) __x = (x);					\
23 	__copy_to_user((ptr), &__x, sizeof(*(ptr))) ? -EFAULT : 0;	\
24 })
25 
26 #endif /* _ASM_GENERIC_UACCESS_H */
27