|  | #ifndef _I386_BYTEORDER_H | 
|  | #define _I386_BYTEORDER_H | 
|  |  | 
|  | /* | 
|  | * This file contains parts of Linux's /usr/include/asm/byteorder.h | 
|  | */ | 
|  |  | 
|  | #undef ntohl | 
|  | #undef ntohs | 
|  | #undef htonl | 
|  | #undef htons | 
|  |  | 
|  | extern unsigned long int	ntohl(unsigned long int); | 
|  | extern unsigned short int	ntohs(unsigned short int); | 
|  | extern unsigned long int	htonl(unsigned long int); | 
|  | extern unsigned short int	htons(unsigned short int); | 
|  |  | 
|  | extern __inline__ unsigned long int	__ntohl(unsigned long int); | 
|  | extern __inline__ unsigned short int	__ntohs(unsigned short int); | 
|  | extern __inline__ unsigned long int	__constant_ntohl(unsigned long int); | 
|  | extern __inline__ unsigned short int	__constant_ntohs(unsigned short int); | 
|  |  | 
|  | extern __inline__ unsigned long int | 
|  | __ntohl(unsigned long int x) | 
|  | { | 
|  | __asm__("xchgb %b0,%h0\n\t"	/* swap lower bytes	*/ | 
|  | "rorl $16,%0\n\t"	/* swap words		*/ | 
|  | "xchgb %b0,%h0"		/* swap higher bytes	*/ | 
|  | :"=q" (x) | 
|  | : "0" (x)); | 
|  | return x; | 
|  | } | 
|  |  | 
|  | #define __constant_ntohl(x) \ | 
|  | ((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \ | 
|  | (((unsigned long int)(x) & 0x0000ff00U) <<  8) | \ | 
|  | (((unsigned long int)(x) & 0x00ff0000U) >>  8) | \ | 
|  | (((unsigned long int)(x) & 0xff000000U) >> 24))) | 
|  |  | 
|  | extern __inline__ unsigned short int | 
|  | __ntohs(unsigned short int x) | 
|  | { | 
|  | __asm__("xchgb %b0,%h0"		/* swap bytes		*/ | 
|  | : "=q" (x) | 
|  | :  "0" (x)); | 
|  | return x; | 
|  | } | 
|  |  | 
|  | #define __constant_ntohs(x) \ | 
|  | ((unsigned short int)((((unsigned short int)(x) & 0x00ff) << 8) | \ | 
|  | (((unsigned short int)(x) & 0xff00) >> 8))) \ | 
|  |  | 
|  | #define __htonl(x) __ntohl(x) | 
|  | #define __htons(x) __ntohs(x) | 
|  | #define __constant_htonl(x) __constant_ntohl(x) | 
|  | #define __constant_htons(x) __constant_ntohs(x) | 
|  |  | 
|  | #ifdef  __OPTIMIZE__ | 
|  | #  define ntohl(x) \ | 
|  | (__builtin_constant_p((long)(x)) ? \ | 
|  | __constant_ntohl((x)) : \ | 
|  | __ntohl((x))) | 
|  | #  define ntohs(x) \ | 
|  | (__builtin_constant_p((short)(x)) ? \ | 
|  | __constant_ntohs((x)) : \ | 
|  | __ntohs((x))) | 
|  | #  define htonl(x) \ | 
|  | (__builtin_constant_p((long)(x)) ? \ | 
|  | __constant_htonl((x)) : \ | 
|  | __htonl((x))) | 
|  | #  define htons(x) \ | 
|  | (__builtin_constant_p((short)(x)) ? \ | 
|  | __constant_htons((x)) : \ | 
|  | __htons((x))) | 
|  | #endif | 
|  |  | 
|  | #endif |