svn commit: trunk/uClibc/utils

vapier at uclibc.org vapier at uclibc.org
Mon Nov 21 23:56:37 UTC 2005


Author: vapier
Date: 2005-11-21 15:56:34 -0800 (Mon, 21 Nov 2005)
New Revision: 12466

Log:
fix bswap32/bswap16 macros for non-linux targets as reported by Melange in Bug 553

Modified:
   trunk/uClibc/utils/bswap.h


Changeset:
Modified: trunk/uClibc/utils/bswap.h
===================================================================
--- trunk/uClibc/utils/bswap.h	2005-11-21 23:55:00 UTC (rev 12465)
+++ trunk/uClibc/utils/bswap.h	2005-11-21 23:56:34 UTC (rev 12466)
@@ -32,23 +32,19 @@
 #ifdef __linux__
 #include <byteswap.h>
 #else
-#include <string.h>
-static __inline__ uint32_t bswap_32(uint32_t x)
-     {
-       uint32_t res;
 
-       swab((void*)&x, (void*)&res, sizeof(uint32_t));
-
-       return res;
-     }
-
-static __inline__ uint16_t bswap_16(uint16_t x)
-     {
-       uint16_t res;
-
-       swab((void*)&x, (void*)&res, sizeof(uint16_t));
-       return res;
-     }
+static inline uint32_t bswap_32(uint32_t x)
+{
+	return ((((x) & 0xff00) >> 8) | \
+	        (((x) & 0x00ff) << 8));
+}
+static inline uint16_t bswap_16(uint16_t x)
+{
+	return ((((x) & 0xff000000) >> 24) | \
+	        (((x) & 0x00ff0000) >>  8) | \
+	        (((x) & 0x0000ff00) <<  8) | \
+	        (((x) & 0x000000ff) << 24));
+}
 #endif
 
 #endif




More information about the uClibc-cvs mailing list