typo
[lnanohttp.git] / ulinux / archs / x86 / utils / endian.h
blobb7613398b383922c239a952a8cbe616f17a615af
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 *******************************************************************************/
7 #ifdef __GNUC__
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));
17 return v;
20 static inline ulinux_u64 ulinux_cpu2be64(ulinux_u64 val)
22 union{
23 struct{
24 ulinux_u32 a;
25 ulinux_u32 b;
26 } s;
27 ulinux_u64 u;
28 } v;
29 v.u=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));
33 return v.u;
35 #else
36 ulinux_u16 ulinux_cpu2be16(ulinux_u16 v);
37 ulinux_u32 ulinux_cpu2be32(ulinux_u32 v);
38 ulinux_u64 ulinux_cpu2be64(ulinux_u64 val);
39 #endif
41 #define ulinux_be162cpu(v) ulinux_cpu2be16(v)
42 #define ulinux_be322cpu(v) ulinux_cpu2be32(v)
43 #define ulinux_be642cpu(v) ulinux_cpu2be64(v)
45 /*little endian*/
46 #define ulinux_cpu2le32(v) (v)
47 #define ulinux_cpu2le64(v) (v)
48 #define ulinux_le322cpu(v) (v)
49 #define ulinux_le642cpu(v) (v)
50 #endif