linux/arch/nds32/include/asm/swab.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2// Copyright (C) 2005-2017 Andes Technology Corporation
   3
   4#ifndef __NDS32_SWAB_H__
   5#define __NDS32_SWAB_H__
   6
   7#include <linux/types.h>
   8#include <linux/compiler.h>
   9
  10static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
  11{
  12        __asm__("wsbh   %0, %0\n\t"     /* word swap byte within halfword */
  13                "rotri  %0, %0, #16\n"
  14                :"=r"(x)
  15                :"0"(x));
  16        return x;
  17}
  18
  19static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x)
  20{
  21        __asm__("wsbh   %0, %0\n"       /* word swap byte within halfword */
  22                :"=r"(x)
  23                :"0"(x));
  24        return x;
  25}
  26
  27#define __arch_swab32(x) ___arch__swab32(x)
  28#define __arch_swab16(x) ___arch__swab16(x)
  29
  30#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
  31#define __BYTEORDER_HAS_U64__
  32#define __SWAB_64_THRU_32__
  33#endif
  34
  35#endif /* __NDS32_SWAB_H__ */
  36