diff options
Diffstat (limited to 'include/asm-generic/unaligned.h')
| -rw-r--r-- | include/asm-generic/unaligned.h | 21 | 
1 files changed, 13 insertions, 8 deletions
diff --git a/include/asm-generic/unaligned.h b/include/asm-generic/unaligned.h index 03cf5936bad..1ac097279db 100644 --- a/include/asm-generic/unaligned.h +++ b/include/asm-generic/unaligned.h @@ -4,22 +4,27 @@  /*   * This is the most generic implementation of unaligned accesses   * and should work almost anywhere. - * - * If an architecture can handle unaligned accesses in hardware, - * it may want to use the linux/unaligned/access_ok.h implementation - * instead.   */  #include <asm/byteorder.h> +/* Set by the arch if it can handle unaligned accesses in hardware. */ +#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS +# include <linux/unaligned/access_ok.h> +#endif +  #if defined(__LITTLE_ENDIAN) -# include <linux/unaligned/le_struct.h> -# include <linux/unaligned/be_byteshift.h> +# ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS +#  include <linux/unaligned/le_struct.h> +#  include <linux/unaligned/be_byteshift.h> +# endif  # include <linux/unaligned/generic.h>  # define get_unaligned	__get_unaligned_le  # define put_unaligned	__put_unaligned_le  #elif defined(__BIG_ENDIAN) -# include <linux/unaligned/be_struct.h> -# include <linux/unaligned/le_byteshift.h> +# ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS +#  include <linux/unaligned/be_struct.h> +#  include <linux/unaligned/le_byteshift.h> +# endif  # include <linux/unaligned/generic.h>  # define get_unaligned	__get_unaligned_be  # define put_unaligned	__put_unaligned_be  | 
