Linux-2.6.12-rc2
[linux-2.6/next.git] / include / asm-sh64 / byteorder.h
blobf602ebe334ebc3dcc25e0f9207dd87373de98d8c
1 #ifndef __ASM_SH64_BYTEORDER_H
2 #define __ASM_SH64_BYTEORDER_H
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.
9 * include/asm-sh64/byteorder.h
11 * Copyright (C) 2000, 2001 Paolo Alberelli
15 #include <asm/types.h>
17 static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
19 __asm__("byterev %0, %0\n\t"
20 "shari %0, 32, %0"
21 : "=r" (x)
22 : "0" (x));
23 return x;
26 static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
28 __asm__("byterev %0, %0\n\t"
29 "shari %0, 48, %0"
30 : "=r" (x)
31 : "0" (x));
32 return x;
35 #define __arch__swab32(x) ___arch__swab32(x)
36 #define __arch__swab16(x) ___arch__swab16(x)
38 #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
39 # define __BYTEORDER_HAS_U64__
40 # define __SWAB_64_THRU_32__
41 #endif
43 #ifdef __LITTLE_ENDIAN__
44 #include <linux/byteorder/little_endian.h>
45 #else
46 #include <linux/byteorder/big_endian.h>
47 #endif
49 #endif /* __ASM_SH64_BYTEORDER_H */