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