linux/include/asm-generic/unaligned.h
<<
>>
Prefs
   1#ifndef __ASM_GENERIC_UNALIGNED_H
   2#define __ASM_GENERIC_UNALIGNED_H
   3
   4/*
   5 * This is the most generic implementation of unaligned accesses
   6 * and should work almost anywhere.
   7 */
   8#include <asm/byteorder.h>
   9
  10/* Set by the arch if it can handle unaligned accesses in hardware. */
  11#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
  12# include <linux/unaligned/access_ok.h>
  13#endif
  14
  15#if defined(__LITTLE_ENDIAN)
  16# ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
  17#  include <linux/unaligned/le_struct.h>
  18#  include <linux/unaligned/be_byteshift.h>
  19# endif
  20# include <linux/unaligned/generic.h>
  21# define get_unaligned  __get_unaligned_le
  22# define put_unaligned  __put_unaligned_le
  23#elif defined(__BIG_ENDIAN)
  24# ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
  25#  include <linux/unaligned/be_struct.h>
  26#  include <linux/unaligned/le_byteshift.h>
  27# endif
  28# include <linux/unaligned/generic.h>
  29# define get_unaligned  __get_unaligned_be
  30# define put_unaligned  __put_unaligned_be
  31#else
  32# error need to define endianess
  33#endif
  34
  35#endif /* __ASM_GENERIC_UNALIGNED_H */
  36