On Thu, Feb 14, 2008 at 08:04:57PM +0530, Rishi M Nair wrote:
> --- byteorder.h.orig  Tue Oct  2 19:44:36 2007
> +++ byteorder.h       Thu Feb 14 17:53:39 2008
> @@ -50,6 +50,17 @@
>  #include <asm/byteorder.h>
>  #endif
>  
> +#ifndef htonll
> +#ifdef _BIG_ENDIAN
> +#define htonll(x)   (x)
> +#define ntohll(x)   (x)
> +#else
> +#define htonll(x)   ((((uint64_t)htonl(x)) << 32) + htonl(x >> 32))
> +#define ntohll(x)   ((((uint64_t)ntohl(x)) << 32) + ntohl(x >> 32))
> +#endif
> +#endif
> +
> +
>  #ifdef       __cplusplus
>  extern "C" {
>  #endif

Be careful - sometimes these simple bugfixes aren't that simple.

There are other definitions of htonll() you'll need to plug in as well:

        usr/src/stand/lib/xdr/byteorder.c

        usr/src/uts/intel/ia32/ml/ia32.il

        usr/src/uts/intel/ia32/ml/i86_subr.s

        usr/src/uts/intel/amd64/ml/amd64.il

Also, there are some htonll macros defined for specific modules that should
be ripped out so they start using systemwide ones.

Dan

Reply via email to