Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


swab.h
01: #ifndef _ASM_X86_SWAB_H
02: #define _ASM_X86_SWAB_H
03: 
04: #include <linux/types.h>
05: 
06: 
07: static __inline__ __u32 __arch_swab32(__u32 val)
08: {
09: #ifdef __i386__
10: # ifdef CONFIG_X86_BSWAP
11:         __asm__("bswap %0" : "=r" (val) : "0" (val));
12: # else
13:         __asm__("xchgb %b0,%h0\n\t"     /* swap lower bytes     */
14:             "rorl $16,%0\n\t"   /* swap words           */
15:             "xchgb %b0,%h0"     /* swap higher bytes    */
16:             : "=q" (val)
17:             : "0" (val));
18: # endif
19: 
20: #else /* __i386__ */
21:         __asm__("bswapl %0"
22:             : "=r" (val)
23:             : "0" (val));
24: #endif
25:         return val;
26: }
27: #define __arch_swab32 __arch_swab32
28: 
29: static __inline__ __u64 __arch_swab64(__u64 val)
30: {
31: #ifdef __i386__
32:         union {
33:                 struct {
34:                         __u32 a;
35:                         __u32 b;
36:                 } s;
37:                 __u64 u;
38:         } v;
39:         v.u = val;
40: # ifdef CONFIG_X86_BSWAP
41:         __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
42:             : "=r" (v.s.a), "=r" (v.s.b)
43:             : "0" (v.s.a), "1" (v.s.b));
44: # else
45:         v.s.a = __arch_swab32(v.s.a);
46:         v.s.b = __arch_swab32(v.s.b);
47:         __asm__("xchgl %0,%1"
48:             : "=r" (v.s.a), "=r" (v.s.b)
49:             : "0" (v.s.a), "1" (v.s.b));
50: # endif
51:         return v.u;
52: #else /* __i386__ */
53:         __asm__("bswapq %0"
54:             : "=r" (val)
55:             : "0" (val));
56:         return val;
57: #endif
58: }
59: #define __arch_swab64 __arch_swab64
60: 
61: #endif /* _ASM_X86_SWAB_H */
62: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/