blob: 1ac097279db1ee68cf7e02760ddfea2ac389dce7 [file] [log] [blame]
Arnd Bergmannaafe4db2009-05-13 22:56:33 +00001#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.
Arnd Bergmannaafe4db2009-05-13 22:56:33 +00007 */
8#include <asm/byteorder.h>
9
Ard Biesheuvel0567f5f2014-05-01 17:49:33 +020010/* 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
Arnd Bergmannaafe4db2009-05-13 22:56:33 +000015#if defined(__LITTLE_ENDIAN)
Ard Biesheuvel0567f5f2014-05-01 17:49:33 +020016# ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
17# include <linux/unaligned/le_struct.h>
18# include <linux/unaligned/be_byteshift.h>
19# endif
Arnd Bergmannaafe4db2009-05-13 22:56:33 +000020# include <linux/unaligned/generic.h>
21# define get_unaligned __get_unaligned_le
22# define put_unaligned __put_unaligned_le
23#elif defined(__BIG_ENDIAN)
Ard Biesheuvel0567f5f2014-05-01 17:49:33 +020024# ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
25# include <linux/unaligned/be_struct.h>
26# include <linux/unaligned/le_byteshift.h>
27# endif
Arnd Bergmannaafe4db2009-05-13 22:56:33 +000028# 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 */