linux/include/asm-generic/uaccess-unaligned.h
<<
>>
Prefs
   1#ifndef __ASM_GENERIC_UACCESS_UNALIGNED_H
   2#define __ASM_GENERIC_UACCESS_UNALIGNED_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_UNALIGNED_H */
  27