1 #ifndef ULINUX_ARCH_UTILS_ENDIAN_H
2 #define ULINUX_ARCH_UTILS_ENDIAN_H
3 /*******************************************************************************
4 this code is protected by the GNU affero GPLv3
5 author:Sylvain BERTRAND (sylvain.bertrand AT gmail dot com)
6 *******************************************************************************/
8 static inline ulinux_u16
ulinux_cpu2be16(ulinux_u16 v
)
10 return (ulinux_u16
)((((ulinux_u16
)(v
)&(ulinux_u16
)0x00ffU
)<<8)
11 |(((ulinux_u16
)(v
)&(ulinux_u16
)0xff00U
)>>8));
14 static inline ulinux_u32
ulinux_cpu2be32(ulinux_u32 v
)
16 asm("bswapl %0":"=r" (v
):"0" (v
));
20 static inline ulinux_u64
ulinux_cpu2be64(ulinux_u64 val
)
30 asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
31 : "=r" (v
.s
.a
), "=r" (v
.s
.b
)
32 : "0" (v
.s
.a
), "1" (v
.s
.b
));
36 ulinux_u16
ulinux_cpu2be16(ulinux_u16 v
);
37 ulinux_u32
ulinux_cpu2be32(ulinux_u32 v
);
38 ulinux_u64
ulinux_cpu2be64(ulinux_u64 val
);
41 #define ulinux_be162cpu(v) ulinux_cpu2be16(v)
42 #define ulinux_be322cpu(v) ulinux_cpu2be32(v)
43 #define ulinux_be642cpu(v) ulinux_cpu2be64(v)
46 #define ulinux_cpu2le32(v) (v)
47 #define ulinux_cpu2le64(v) (v)
48 #define ulinux_le322cpu(v) (v)
49 #define ulinux_le642cpu(v) (v)