xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/asm/byteorder.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /*
2*53ee8cc1Swenshuai.xi  * This file is subject to the terms and conditions of the GNU General Public
3*53ee8cc1Swenshuai.xi  * License.  See the file "COPYING" in the main directory of this archive
4*53ee8cc1Swenshuai.xi  * for more details.
5*53ee8cc1Swenshuai.xi  *
6*53ee8cc1Swenshuai.xi  * Copyright (C) 1996, 99, 2003 by Ralf Baechle
7*53ee8cc1Swenshuai.xi  */
8*53ee8cc1Swenshuai.xi #ifndef _ASM_BYTEORDER_H
9*53ee8cc1Swenshuai.xi #define _ASM_BYTEORDER_H
10*53ee8cc1Swenshuai.xi 
11*53ee8cc1Swenshuai.xi #include <asm/types.h>
12*53ee8cc1Swenshuai.xi 
13*53ee8cc1Swenshuai.xi #ifdef __GNUC__
14*53ee8cc1Swenshuai.xi 
15*53ee8cc1Swenshuai.xi #ifdef CONFIG_CPU_MIPSR2
16*53ee8cc1Swenshuai.xi 
___arch__swab16(__u16 x)17*53ee8cc1Swenshuai.xi static __inline__ __u16 ___arch__swab16(__u16 x)
18*53ee8cc1Swenshuai.xi {
19*53ee8cc1Swenshuai.xi 	__asm__(
20*53ee8cc1Swenshuai.xi 	"	wsbh	%0, %1			\n"
21*53ee8cc1Swenshuai.xi 	: "=r" (x)
22*53ee8cc1Swenshuai.xi 	: "r" (x));
23*53ee8cc1Swenshuai.xi 
24*53ee8cc1Swenshuai.xi 	return x;
25*53ee8cc1Swenshuai.xi }
26*53ee8cc1Swenshuai.xi #define __arch__swab16(x)	___arch__swab16(x)
27*53ee8cc1Swenshuai.xi 
___arch__swab32(__u32 x)28*53ee8cc1Swenshuai.xi static __inline__ __u32 ___arch__swab32(__u32 x)
29*53ee8cc1Swenshuai.xi {
30*53ee8cc1Swenshuai.xi 	__asm__(
31*53ee8cc1Swenshuai.xi 	"	wsbh	%0, %1			\n"
32*53ee8cc1Swenshuai.xi 	"	rotr	%0, %0, 16		\n"
33*53ee8cc1Swenshuai.xi 	: "=r" (x)
34*53ee8cc1Swenshuai.xi 	: "r" (x));
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi 	return x;
37*53ee8cc1Swenshuai.xi }
38*53ee8cc1Swenshuai.xi #define __arch__swab32(x)	___arch__swab32(x)
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi #ifdef CONFIG_CPU_MIPS64_R2
41*53ee8cc1Swenshuai.xi 
___arch__swab64(__u64 x)42*53ee8cc1Swenshuai.xi static __inline__ __u64 ___arch__swab64(__u64 x)
43*53ee8cc1Swenshuai.xi {
44*53ee8cc1Swenshuai.xi 	__asm__(
45*53ee8cc1Swenshuai.xi 	"	dsbh	%0, %1			\n"
46*53ee8cc1Swenshuai.xi 	"	dshd	%0, %0			\n"
47*53ee8cc1Swenshuai.xi 	"	drotr	%0, %0, 32		\n"
48*53ee8cc1Swenshuai.xi 	: "=r" (x)
49*53ee8cc1Swenshuai.xi 	: "r" (x));
50*53ee8cc1Swenshuai.xi 
51*53ee8cc1Swenshuai.xi 	return x;
52*53ee8cc1Swenshuai.xi }
53*53ee8cc1Swenshuai.xi 
54*53ee8cc1Swenshuai.xi #define __arch__swab64(x)	___arch__swab64(x)
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi #endif /* CONFIG_CPU_MIPS64_R2 */
57*53ee8cc1Swenshuai.xi 
58*53ee8cc1Swenshuai.xi #endif /* CONFIG_CPU_MIPSR2 */
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
61*53ee8cc1Swenshuai.xi #  define __BYTEORDER_HAS_U64__
62*53ee8cc1Swenshuai.xi #  define __SWAB_64_THRU_32__
63*53ee8cc1Swenshuai.xi #endif
64*53ee8cc1Swenshuai.xi 
65*53ee8cc1Swenshuai.xi #endif /* __GNUC__ */
66*53ee8cc1Swenshuai.xi 
67*53ee8cc1Swenshuai.xi #if defined(__MIPSEB__)
68*53ee8cc1Swenshuai.xi #  include <linux/byteorder/big_endian.h>
69*53ee8cc1Swenshuai.xi #elif defined(__MIPSEL__)
70*53ee8cc1Swenshuai.xi #  include <linux/byteorder/little_endian.h>
71*53ee8cc1Swenshuai.xi #else
72*53ee8cc1Swenshuai.xi #  error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
73*53ee8cc1Swenshuai.xi #endif
74*53ee8cc1Swenshuai.xi 
75*53ee8cc1Swenshuai.xi #endif /* _ASM_BYTEORDER_H */
76