]> nv-tegra.nvidia Code Review - linux-2.6.git/blob - arch/mips/include/asm/byteorder.h
Merge branch 'topic/oxygen' into to-push
[linux-2.6.git] / arch / mips / include / asm / byteorder.h
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 1996, 99, 2003 by Ralf Baechle
7  */
8 #ifndef _ASM_BYTEORDER_H
9 #define _ASM_BYTEORDER_H
10
11 #include <linux/compiler.h>
12 #include <asm/types.h>
13
14 #if defined(__MIPSEB__)
15 # define __BIG_ENDIAN
16 #elif defined(__MIPSEL__)
17 # define __LITTLE_ENDIAN
18 #else
19 # error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
20 #endif
21
22 #define __SWAB_64_THRU_32__
23
24 #ifdef CONFIG_CPU_MIPSR2
25
26 static inline __attribute_const__ __u16 __arch_swab16(__u16 x)
27 {
28         __asm__(
29         "       wsbh    %0, %1                  \n"
30         : "=r" (x)
31         : "r" (x));
32
33         return x;
34 }
35 #define __arch_swab16 __arch_swab16
36
37 static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
38 {
39         __asm__(
40         "       wsbh    %0, %1                  \n"
41         "       rotr    %0, %0, 16              \n"
42         : "=r" (x)
43         : "r" (x));
44
45         return x;
46 }
47 #define __arch_swab32 __arch_swab32
48
49 #ifdef CONFIG_CPU_MIPS64_R2
50 static inline __attribute_const__ __u64 __arch_swab64(__u64 x)
51 {
52         __asm__(
53         "       dsbh    %0, %1\n"
54         "       dshd    %0, %0"
55         : "=r" (x)
56         : "r" (x));
57
58         return x;
59 }
60 #define __arch_swab64 __arch_swab64
61 #endif /* CONFIG_CPU_MIPS64_R2 */
62
63 #endif /* CONFIG_CPU_MIPSR2 */
64
65 #include <linux/byteorder.h>
66
67 #endif /* _ASM_BYTEORDER_H */