xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8188fu/include/byteorder/swab.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2007 - 2017 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef _LINUX_BYTEORDER_SWAB_H
16*4882a593Smuzhiyun #define _LINUX_BYTEORDER_SWAB_H
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #if !defined(CONFIG_PLATFORM_MSTAR)
19*4882a593Smuzhiyun #ifndef __u16
20*4882a593Smuzhiyun 	typedef unsigned short __u16;
21*4882a593Smuzhiyun #endif
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #ifndef __u32
24*4882a593Smuzhiyun 	typedef unsigned int	__u32;
25*4882a593Smuzhiyun #endif
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #ifndef __u8
28*4882a593Smuzhiyun 	typedef unsigned char __u8;
29*4882a593Smuzhiyun #endif
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #ifndef __u64
32*4882a593Smuzhiyun 	typedef unsigned long long	__u64;
33*4882a593Smuzhiyun #endif
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 
___swab16(__u16 x)36*4882a593Smuzhiyun __inline static __u16  ___swab16(__u16 x)
37*4882a593Smuzhiyun {
38*4882a593Smuzhiyun 	__u16 __x = x;
39*4882a593Smuzhiyun 	return
40*4882a593Smuzhiyun 		 (__u16)(
41*4882a593Smuzhiyun 			 (((__u16)(__x)&(__u16)0x00ffU) << 8) |
42*4882a593Smuzhiyun 			 (((__u16)(__x)&(__u16)0xff00U) >> 8));
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun }
45*4882a593Smuzhiyun 
___swab32(__u32 x)46*4882a593Smuzhiyun __inline static __u32  ___swab32(__u32 x)
47*4882a593Smuzhiyun {
48*4882a593Smuzhiyun 	__u32 __x = (x);
49*4882a593Smuzhiyun 	return  (__u32)(
50*4882a593Smuzhiyun 			(((__u32)(__x)&(__u32)0x000000ffUL) << 24) |
51*4882a593Smuzhiyun 			(((__u32)(__x)&(__u32)0x0000ff00UL) <<  8) |
52*4882a593Smuzhiyun 			(((__u32)(__x)&(__u32)0x00ff0000UL) >>  8) |
53*4882a593Smuzhiyun 			(((__u32)(__x)&(__u32)0xff000000UL) >> 24));
54*4882a593Smuzhiyun }
55*4882a593Smuzhiyun 
___swab64(__u64 x)56*4882a593Smuzhiyun __inline static __u64  ___swab64(__u64 x)
57*4882a593Smuzhiyun {
58*4882a593Smuzhiyun 	__u64 __x = (x);
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun 	return
61*4882a593Smuzhiyun 		 (__u64)(\
62*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x00000000000000ffULL) << 56) | \
63*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x000000000000ff00ULL) << 40) | \
64*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x0000000000ff0000ULL) << 24) | \
65*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x00000000ff000000ULL) <<  8) | \
66*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x000000ff00000000ULL) >>  8) | \
67*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x0000ff0000000000ULL) >> 24) | \
68*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0x00ff000000000000ULL) >> 40) | \
69*4882a593Smuzhiyun 		 (__u64)(((__u64)(__x)&(__u64)0xff00000000000000ULL) >> 56));
70*4882a593Smuzhiyun 	\
71*4882a593Smuzhiyun }
72*4882a593Smuzhiyun #endif /* CONFIG_PLATFORM_MSTAR */
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #ifndef __arch__swab16
__arch__swab16(__u16 x)75*4882a593Smuzhiyun __inline static __u16 __arch__swab16(__u16 x)
76*4882a593Smuzhiyun {
77*4882a593Smuzhiyun 	return ___swab16(x);
78*4882a593Smuzhiyun }
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #endif
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #ifndef __arch__swab32
__arch__swab32(__u32 x)83*4882a593Smuzhiyun __inline static __u32 __arch__swab32(__u32 x)
84*4882a593Smuzhiyun {
85*4882a593Smuzhiyun 	__u32 __tmp = (x) ;
86*4882a593Smuzhiyun 	return ___swab32(__tmp);
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun #endif
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #ifndef __arch__swab64
91*4882a593Smuzhiyun 
__arch__swab64(__u64 x)92*4882a593Smuzhiyun __inline static __u64 __arch__swab64(__u64 x)
93*4882a593Smuzhiyun {
94*4882a593Smuzhiyun 	__u64 __tmp = (x) ;
95*4882a593Smuzhiyun 	return ___swab64(__tmp);
96*4882a593Smuzhiyun }
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #endif
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #ifndef __swab16
102*4882a593Smuzhiyun 	#define __swab16(x) __fswab16(x)
103*4882a593Smuzhiyun 	#define __swab32(x) __fswab32(x)
104*4882a593Smuzhiyun 	#define __swab64(x) __fswab64(x)
105*4882a593Smuzhiyun #endif /* __swab16 */
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun #ifdef PLATFORM_FREEBSD
__fswab16(__u16 x)108*4882a593Smuzhiyun 	__inline static __u16 __fswab16(__u16 x)
109*4882a593Smuzhiyun #else
110*4882a593Smuzhiyun 	__inline static const __u16 __fswab16(__u16 x)
111*4882a593Smuzhiyun #endif /* PLATFORM_FREEBSD */
112*4882a593Smuzhiyun {
113*4882a593Smuzhiyun 	return __arch__swab16(x);
114*4882a593Smuzhiyun }
115*4882a593Smuzhiyun #ifdef PLATFORM_FREEBSD
__fswab32(__u32 x)116*4882a593Smuzhiyun 	__inline static __u32 __fswab32(__u32 x)
117*4882a593Smuzhiyun #else
118*4882a593Smuzhiyun 	__inline static const __u32 __fswab32(__u32 x)
119*4882a593Smuzhiyun #endif /* PLATFORM_FREEBSD */
120*4882a593Smuzhiyun {
121*4882a593Smuzhiyun 	return __arch__swab32(x);
122*4882a593Smuzhiyun }
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun #if defined(PLATFORM_LINUX) || defined(PLATFORM_WINDOWS)
125*4882a593Smuzhiyun 	#define swab16 __swab16
126*4882a593Smuzhiyun 	#define swab32 __swab32
127*4882a593Smuzhiyun 	#define swab64 __swab64
128*4882a593Smuzhiyun 	#define swab16p __swab16p
129*4882a593Smuzhiyun 	#define swab32p __swab32p
130*4882a593Smuzhiyun 	#define swab64p __swab64p
131*4882a593Smuzhiyun 	#define swab16s __swab16s
132*4882a593Smuzhiyun 	#define swab32s __swab32s
133*4882a593Smuzhiyun 	#define swab64s __swab64s
134*4882a593Smuzhiyun #endif
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun #endif /* _LINUX_BYTEORDER_SWAB_H */
137