Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[pandora-kernel.git] / include / asm-sh64 / byteorder.h
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
17 static __inline__ __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
26 static __inline__ __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 */