#ifndef __OSDEP_H__ #define __OSDEP_H__ /* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2, or (at * your option) any later version. */ #define __LITTLE_ENDIAN /* x86 */ /* Taken from /usr/include/linux/hfs_sysdep.h */ #if defined(__BIG_ENDIAN) # if !defined(__constant_htonl) # define __constant_htonl(x) (x) # endif # if !defined(__constant_htons) # define __constant_htons(x) (x) # endif #elif defined(__LITTLE_ENDIAN) # if !defined(__constant_htonl) # define __constant_htonl(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))) # endif # if !defined(__constant_htons) # define __constant_htons(x) \ ((unsigned short int)((((unsigned short int)(x) & 0x00ff) << 8) | \ (((unsigned short int)(x) & 0xff00) >> 8))) # endif #else # error "Don't know if bytes are big- or little-endian!" #endif #define ntohl(x) \ (__builtin_constant_p(x) ? \ __constant_htonl((x)) : \ __swap32(x)) #define htonl(x) \ (__builtin_constant_p(x) ? \ __constant_htonl((x)) : \ __swap32(x)) #define ntohs(x) \ (__builtin_constant_p(x) ? \ __constant_htons((x)) : \ __swap16(x)) #define htons(x) \ (__builtin_constant_p(x) ? \ __constant_htons((x)) : \ __swap16(x)) static inline unsigned long int __swap32(unsigned long int x) { __asm__("xchgb %b0,%h0\n\t" "rorl $16,%0\n\t" "xchgb %b0,%h0" : "=q" (x) : "0" (x)); return x; } static inline unsigned short int __swap16(unsigned short int x) { __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); return x; } /* Make routines available to all */ #define swap32(x) __swap32(x) #define swap16(x) __swap16(x) #include "linux-asm-io.h" typedef unsigned long Address; /* ANSI prototyping macro */ #ifdef __STDC__ #define P(x) x #else #define P(x) () #endif #endif /* * Local variables: * c-basic-offset: 8 * End: */