X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/6d2010ae8f7a6078e10b361c6962983bab233e0f..490019cf9519204c5fb36b2fba54ceb983bb6b72:/osfmk/i386/endian.h diff --git a/osfmk/i386/endian.h b/osfmk/i386/endian.h index 62dedd9e9..248519588 100644 --- a/osfmk/i386/endian.h +++ b/osfmk/i386/endian.h @@ -55,9 +55,7 @@ static __inline__ unsigned short ntohs(unsigned short w_int) { - register unsigned short w = w_int; - __asm__ volatile("xchgb %h1,%b1" : "=q" (w) : "0" (w)); - return (w); /* zero-extend for compat */ + return ((w_int << 8) | (w_int >> 8)); } #endif @@ -72,9 +70,13 @@ static __inline__ unsigned long ntohl(register unsigned long value) { +#if defined(__clang__) + return (unsigned long)__builtin_bswap32((unsigned int)value); +#else register unsigned long l = value; __asm__ volatile("bswap %0" : "=r" (l) : "0" (l)); return l; +#endif } #endif