linux/include/asm-generic/unaligned.h
<<
>>
Prefs
   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