From 0959625c7eeaccf3f45e256167c85a406e6b6608 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 23 Jun 2010 11:37:39 +0000 Subject: [PATCH] [OSKITTCP] Use RtlUlongByteSwap / RtlUshortByteSwap for byte swapping. They are portable and intrinsics on x86. svn path=/trunk/; revision=47831 --- .../include/freebsd/src/sys/machine/endian.h | 57 +------------------ 1 file changed, 2 insertions(+), 55 deletions(-) diff --git a/reactos/lib/drivers/oskittcp/include/freebsd/src/sys/machine/endian.h b/reactos/lib/drivers/oskittcp/include/freebsd/src/sys/machine/endian.h index bf687d22af2..0aeb4ad5f19 100644 --- a/reactos/lib/drivers/oskittcp/include/freebsd/src/sys/machine/endian.h +++ b/reactos/lib/drivers/oskittcp/include/freebsd/src/sys/machine/endian.h @@ -56,61 +56,8 @@ #include #endif -#ifdef _MSC_VER -static inline unsigned long __byte_swap_long ( unsigned long i ) -{ - char dst[4]; - char* src = (char*)&i; - dst[0] = src[3]; - dst[1] = src[2]; - dst[2] = src[1]; - dst[3] = src[0]; - return *(unsigned long*)&dst[0]; -} - -static inline unsigned short __byte_swap_word ( unsigned short i ) -{ - char dst[2]; - char* src = (char*)&i; - dst[0] = src[1]; - dst[1] = src[0]; - return *(unsigned short*)&dst[0]; -} -#else/*_MSC_VER*/ -#define __word_swap_long(x) \ -({ register u_long __X = (x); \ - __asm ("rorl $16, %1" \ - : "=r" (__X) \ - : "0" (__X)); \ - __X; }) -#if __GNUC__ >= 2 -#define __byte_swap_long(x) \ -__extension__ ({ register u_long __X = (x); \ - __asm ("xchgb %h1, %b1\n\trorl $16, %1\n\txchgb %h1, %b1" \ - : "=q" (__X) \ - : "0" (__X)); \ - __X; }) -#define __byte_swap_word(x) \ -__extension__ ({ register u_short __X = (x); \ - __asm ("xchgb %h1, %b1" \ - : "=q" (__X) \ - : "0" (__X)); \ - __X; }) -#else /* __GNUC__ >= 2 */ -#define __byte_swap_long(x) \ -({ register u_long __X = (x); \ - __asm ("rorw $8, %w1\n\trorl $16, %1\n\trorw $8, %w1" \ - : "=r" (__X) \ - : "0" (__X)); \ - __X; }) -#define __byte_swap_word(x) \ -({ register u_short __X = (x); \ - __asm ("rorw $8, %w1" \ - : "=r" (__X) \ - : "0" (__X)); \ - __X; }) -#endif /* __GNUC__ >= 2 */ -#endif /* _MSC_VER */ +#define __byte_swap_long RtlUlongByteSwap +#define __byte_swap_word RtlUshortByteSwap /* * Macros for network/external number representation conversion.