This source file includes following definitions.
- __ntohl
- __ntohs
1 #ifndef _I386_BYTEORDER_H
2 #define _I386_BYTEORDER_H
3
4 #undef ntohl
5 #undef ntohs
6 #undef htonl
7 #undef htons
8
9 #ifndef __LITTLE_ENDIAN
10 #define __LITTLE_ENDIAN 1234
11 #endif
12
13 #ifndef __LITTLE_ENDIAN_BITFIELD
14 #define __LITTLE_ENDIAN_BITFIELD
15 #endif
16
17
18 #ifdef __KERNEL__
19 #include <linux/config.h>
20 #endif
21
22 extern unsigned long int ntohl(unsigned long int);
23 extern unsigned short int ntohs(unsigned short int);
24 extern unsigned long int htonl(unsigned long int);
25 extern unsigned short int htons(unsigned short int);
26
27 extern __inline__ unsigned long int __ntohl(unsigned long int);
28 extern __inline__ unsigned short int __ntohs(unsigned short int);
29 extern __inline__ unsigned long int __constant_ntohl(unsigned long int);
30 extern __inline__ unsigned short int __constant_ntohs(unsigned short int);
31
32 extern __inline__ unsigned long int
33 __ntohl(unsigned long int x)
34 {
35 #if defined(__KERNEL__) && !defined(CONFIG_M386)
36 __asm__("bswap %0" : "=r" (x) : "0" (x));
37 #else
38 __asm__("xchgb %b0,%h0\n\t"
39 "rorl $16,%0\n\t"
40 "xchgb %b0,%h0"
41 :"=q" (x)
42 : "0" (x));
43 #endif
44 return x;
45 }
46
47 #define __constant_ntohl(x) \
48 ((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \
49 (((unsigned long int)(x) & 0x0000ff00U) << 8) | \
50 (((unsigned long int)(x) & 0x00ff0000U) >> 8) | \
51 (((unsigned long int)(x) & 0xff000000U) >> 24)))
52
53 extern __inline__ unsigned short int
54 __ntohs(unsigned short int x)
55 {
56 __asm__("xchgb %b0,%h0"
57 : "=q" (x)
58 : "0" (x));
59 return x;
60 }
61
62 #define __constant_ntohs(x) \
63 ((unsigned short int)((((unsigned short int)(x) & 0x00ff) << 8) | \
64 (((unsigned short int)(x) & 0xff00) >> 8))) \
65
66 #define __htonl(x) __ntohl(x)
67 #define __htons(x) __ntohs(x)
68 #define __constant_htonl(x) __constant_ntohl(x)
69 #define __constant_htons(x) __constant_ntohs(x)
70
71 #ifdef __OPTIMIZE__
72 # define ntohl(x) \
73 (__builtin_constant_p((long)(x)) ? \
74 __constant_ntohl((x)) : \
75 __ntohl((x)))
76 # define ntohs(x) \
77 (__builtin_constant_p((short)(x)) ? \
78 __constant_ntohs((x)) : \
79 __ntohs((x)))
80 # define htonl(x) \
81 (__builtin_constant_p((long)(x)) ? \
82 __constant_htonl((x)) : \
83 __htonl((x)))
84 # define htons(x) \
85 (__builtin_constant_p((short)(x)) ? \
86 __constant_htons((x)) : \
87 __htons((x)))
88 #endif
89
90 #endif