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