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