1#ifndef __ASM_SH64_BYTEORDER_H 2#define __ASM_SH64_BYTEORDER_H 3 4/* 5 * This file is subject to the terms and conditions of the GNU General Public 6 * License. See the file "COPYING" in the main directory of this archive 7 * for more details. 8 * 9 * include/asm-sh64/byteorder.h 10 * 11 * Copyright (C) 2000, 2001 Paolo Alberelli 12 * 13 */ 14 15#include <asm/types.h> 16 17static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) 18{ 19 __asm__("byterev %0, %0\n\t" 20 "shari %0, 32, %0" 21 : "=r" (x) 22 : "0" (x)); 23 return x; 24} 25 26static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) 27{ 28 __asm__("byterev %0, %0\n\t" 29 "shari %0, 48, %0" 30 : "=r" (x) 31 : "0" (x)); 32 return x; 33} 34 35#define __arch__swab32(x) ___arch__swab32(x) 36#define __arch__swab16(x) ___arch__swab16(x) 37 38#if !defined(__STRICT_ANSI__) || defined(__KERNEL__) 39# define __BYTEORDER_HAS_U64__ 40# define __SWAB_64_THRU_32__ 41#endif 42 43#ifdef __LITTLE_ENDIAN__ 44#include <linux/byteorder/little_endian.h> 45#else 46#include <linux/byteorder/big_endian.h> 47#endif 48 49#endif /* __ASM_SH64_BYTEORDER_H */ 50