~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/swab.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/uapi/linux/swab.h (Version linux-6.12-rc7) and /include/uapi/linux/swab.h (Version linux-2.6.0)


  1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux      1 
  2 #ifndef _UAPI_LINUX_SWAB_H                        
  3 #define _UAPI_LINUX_SWAB_H                        
  4                                                   
  5 #include <linux/types.h>                          
  6 #include <linux/stddef.h>                         
  7 #include <asm/bitsperlong.h>                      
  8 #include <asm/swab.h>                             
  9                                                   
 10 /*                                                
 11  * casts are necessary for constants, because     
 12  * how U/UL/ULL map to __u16, __u32, __u64. At    
 13  */                                               
 14 #define ___constant_swab16(x) ((__u16)(           
 15         (((__u16)(x) & (__u16)0x00ffU) << 8) |    
 16         (((__u16)(x) & (__u16)0xff00U) >> 8)))    
 17                                                   
 18 #define ___constant_swab32(x) ((__u32)(           
 19         (((__u32)(x) & (__u32)0x000000ffUL) <<    
 20         (((__u32)(x) & (__u32)0x0000ff00UL) <<    
 21         (((__u32)(x) & (__u32)0x00ff0000UL) >>    
 22         (((__u32)(x) & (__u32)0xff000000UL) >>    
 23                                                   
 24 #define ___constant_swab64(x) ((__u64)(           
 25         (((__u64)(x) & (__u64)0x00000000000000    
 26         (((__u64)(x) & (__u64)0x000000000000ff    
 27         (((__u64)(x) & (__u64)0x0000000000ff00    
 28         (((__u64)(x) & (__u64)0x00000000ff0000    
 29         (((__u64)(x) & (__u64)0x000000ff000000    
 30         (((__u64)(x) & (__u64)0x0000ff00000000    
 31         (((__u64)(x) & (__u64)0x00ff0000000000    
 32         (((__u64)(x) & (__u64)0xff000000000000    
 33                                                   
 34 #define ___constant_swahw32(x) ((__u32)(          
 35         (((__u32)(x) & (__u32)0x0000ffffUL) <<    
 36         (((__u32)(x) & (__u32)0xffff0000UL) >>    
 37                                                   
 38 #define ___constant_swahb32(x) ((__u32)(          
 39         (((__u32)(x) & (__u32)0x00ff00ffUL) <<    
 40         (((__u32)(x) & (__u32)0xff00ff00UL) >>    
 41                                                   
 42 /*                                                
 43  * Implement the following as inlines, but def    
 44  * macros to allow constant folding when possi    
 45  * ___swab16, ___swab32, ___swab64, ___swahw32    
 46  */                                               
 47                                                   
 48 static inline __attribute_const__ __u16 __fswa    
 49 {                                                 
 50 #if defined (__arch_swab16)                       
 51         return __arch_swab16(val);                
 52 #else                                             
 53         return ___constant_swab16(val);           
 54 #endif                                            
 55 }                                                 
 56                                                   
 57 static inline __attribute_const__ __u32 __fswa    
 58 {                                                 
 59 #if defined(__arch_swab32)                        
 60         return __arch_swab32(val);                
 61 #else                                             
 62         return ___constant_swab32(val);           
 63 #endif                                            
 64 }                                                 
 65                                                   
 66 static inline __attribute_const__ __u64 __fswa    
 67 {                                                 
 68 #if defined (__arch_swab64)                       
 69         return __arch_swab64(val);                
 70 #elif defined(__SWAB_64_THRU_32__)                
 71         __u32 h = val >> 32;                      
 72         __u32 l = val & ((1ULL << 32) - 1);       
 73         return (((__u64)__fswab32(l)) << 32) |    
 74 #else                                             
 75         return ___constant_swab64(val);           
 76 #endif                                            
 77 }                                                 
 78                                                   
 79 static inline __attribute_const__ __u32 __fswa    
 80 {                                                 
 81 #ifdef __arch_swahw32                             
 82         return __arch_swahw32(val);               
 83 #else                                             
 84         return ___constant_swahw32(val);          
 85 #endif                                            
 86 }                                                 
 87                                                   
 88 static inline __attribute_const__ __u32 __fswa    
 89 {                                                 
 90 #ifdef __arch_swahb32                             
 91         return __arch_swahb32(val);               
 92 #else                                             
 93         return ___constant_swahb32(val);          
 94 #endif                                            
 95 }                                                 
 96                                                   
 97 /**                                               
 98  * __swab16 - return a byteswapped 16-bit valu    
 99  * @x: value to byteswap                          
100  */                                               
101 #ifdef __HAVE_BUILTIN_BSWAP16__                   
102 #define __swab16(x) (__u16)__builtin_bswap16((    
103 #else                                             
104 #define __swab16(x)                               
105         (__u16)(__builtin_constant_p(x) ?         
106         ___constant_swab16(x) :                   
107         __fswab16(x))                             
108 #endif                                            
109                                                   
110 /**                                               
111  * __swab32 - return a byteswapped 32-bit valu    
112  * @x: value to byteswap                          
113  */                                               
114 #ifdef __HAVE_BUILTIN_BSWAP32__                   
115 #define __swab32(x) (__u32)__builtin_bswap32((    
116 #else                                             
117 #define __swab32(x)                               
118         (__u32)(__builtin_constant_p(x) ?         
119         ___constant_swab32(x) :                   
120         __fswab32(x))                             
121 #endif                                            
122                                                   
123 /**                                               
124  * __swab64 - return a byteswapped 64-bit valu    
125  * @x: value to byteswap                          
126  */                                               
127 #ifdef __HAVE_BUILTIN_BSWAP64__                   
128 #define __swab64(x) (__u64)__builtin_bswap64((    
129 #else                                             
130 #define __swab64(x)                               
131         (__u64)(__builtin_constant_p(x) ?         
132         ___constant_swab64(x) :                   
133         __fswab64(x))                             
134 #endif                                            
135                                                   
136 static __always_inline unsigned long __swab(co    
137 {                                                 
138 #if __BITS_PER_LONG == 64                         
139         return __swab64(y);                       
140 #else /* __BITS_PER_LONG == 32 */                 
141         return __swab32(y);                       
142 #endif                                            
143 }                                                 
144                                                   
145 /**                                               
146  * __swahw32 - return a word-swapped 32-bit va    
147  * @x: value to wordswap                          
148  *                                                
149  * __swahw32(0x12340000) is 0x00001234            
150  */                                               
151 #define __swahw32(x)                              
152         (__builtin_constant_p((__u32)(x)) ?       
153         ___constant_swahw32(x) :                  
154         __fswahw32(x))                            
155                                                   
156 /**                                               
157  * __swahb32 - return a high and low byte-swap    
158  * @x: value to byteswap                          
159  *                                                
160  * __swahb32(0x12345678) is 0x34127856            
161  */                                               
162 #define __swahb32(x)                              
163         (__builtin_constant_p((__u32)(x)) ?       
164         ___constant_swahb32(x) :                  
165         __fswahb32(x))                            
166                                                   
167 /**                                               
168  * __swab16p - return a byteswapped 16-bit val    
169  * @p: pointer to a naturally-aligned 16-bit v    
170  */                                               
171 static __always_inline __u16 __swab16p(const _    
172 {                                                 
173 #ifdef __arch_swab16p                             
174         return __arch_swab16p(p);                 
175 #else                                             
176         return __swab16(*p);                      
177 #endif                                            
178 }                                                 
179                                                   
180 /**                                               
181  * __swab32p - return a byteswapped 32-bit val    
182  * @p: pointer to a naturally-aligned 32-bit v    
183  */                                               
184 static __always_inline __u32 __swab32p(const _    
185 {                                                 
186 #ifdef __arch_swab32p                             
187         return __arch_swab32p(p);                 
188 #else                                             
189         return __swab32(*p);                      
190 #endif                                            
191 }                                                 
192                                                   
193 /**                                               
194  * __swab64p - return a byteswapped 64-bit val    
195  * @p: pointer to a naturally-aligned 64-bit v    
196  */                                               
197 static __always_inline __u64 __swab64p(const _    
198 {                                                 
199 #ifdef __arch_swab64p                             
200         return __arch_swab64p(p);                 
201 #else                                             
202         return __swab64(*p);                      
203 #endif                                            
204 }                                                 
205                                                   
206 /**                                               
207  * __swahw32p - return a wordswapped 32-bit va    
208  * @p: pointer to a naturally-aligned 32-bit v    
209  *                                                
210  * See __swahw32() for details of wordswapping    
211  */                                               
212 static inline __u32 __swahw32p(const __u32 *p)    
213 {                                                 
214 #ifdef __arch_swahw32p                            
215         return __arch_swahw32p(p);                
216 #else                                             
217         return __swahw32(*p);                     
218 #endif                                            
219 }                                                 
220                                                   
221 /**                                               
222  * __swahb32p - return a high and low byteswap    
223  * @p: pointer to a naturally-aligned 32-bit v    
224  *                                                
225  * See __swahb32() for details of high/low byt    
226  */                                               
227 static inline __u32 __swahb32p(const __u32 *p)    
228 {                                                 
229 #ifdef __arch_swahb32p                            
230         return __arch_swahb32p(p);                
231 #else                                             
232         return __swahb32(*p);                     
233 #endif                                            
234 }                                                 
235                                                   
236 /**                                               
237  * __swab16s - byteswap a 16-bit value in-plac    
238  * @p: pointer to a naturally-aligned 16-bit v    
239  */                                               
240 static inline void __swab16s(__u16 *p)            
241 {                                                 
242 #ifdef __arch_swab16s                             
243         __arch_swab16s(p);                        
244 #else                                             
245         *p = __swab16p(p);                        
246 #endif                                            
247 }                                                 
248 /**                                               
249  * __swab32s - byteswap a 32-bit value in-plac    
250  * @p: pointer to a naturally-aligned 32-bit v    
251  */                                               
252 static __always_inline void __swab32s(__u32 *p    
253 {                                                 
254 #ifdef __arch_swab32s                             
255         __arch_swab32s(p);                        
256 #else                                             
257         *p = __swab32p(p);                        
258 #endif                                            
259 }                                                 
260                                                   
261 /**                                               
262  * __swab64s - byteswap a 64-bit value in-plac    
263  * @p: pointer to a naturally-aligned 64-bit v    
264  */                                               
265 static __always_inline void __swab64s(__u64 *p    
266 {                                                 
267 #ifdef __arch_swab64s                             
268         __arch_swab64s(p);                        
269 #else                                             
270         *p = __swab64p(p);                        
271 #endif                                            
272 }                                                 
273                                                   
274 /**                                               
275  * __swahw32s - wordswap a 32-bit value in-pla    
276  * @p: pointer to a naturally-aligned 32-bit v    
277  *                                                
278  * See __swahw32() for details of wordswapping    
279  */                                               
280 static inline void __swahw32s(__u32 *p)           
281 {                                                 
282 #ifdef __arch_swahw32s                            
283         __arch_swahw32s(p);                       
284 #else                                             
285         *p = __swahw32p(p);                       
286 #endif                                            
287 }                                                 
288                                                   
289 /**                                               
290  * __swahb32s - high and low byteswap a 32-bit    
291  * @p: pointer to a naturally-aligned 32-bit v    
292  *                                                
293  * See __swahb32() for details of high and low    
294  */                                               
295 static inline void __swahb32s(__u32 *p)           
296 {                                                 
297 #ifdef __arch_swahb32s                            
298         __arch_swahb32s(p);                       
299 #else                                             
300         *p = __swahb32p(p);                       
301 #endif                                            
302 }                                                 
303                                                   
304                                                   
305 #endif /* _UAPI_LINUX_SWAB_H */                   
306                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php