svn commit: r211293 - projects/ofed/head/sys/amd64/include

Jeff Roberson jeff at FreeBSD.org
Fri Aug 13 22:39:11 UTC 2010


Author: jeff
Date: Fri Aug 13 22:39:11 2010
New Revision: 211293
URL: http://svn.freebsd.org/changeset/base/211293

Log:
   - Provide a const testing wrapper for bswap16.
   - Use __inline to avoid compile problems with stricter compiler settings.

Modified:
  projects/ofed/head/sys/amd64/include/endian.h

Modified: projects/ofed/head/sys/amd64/include/endian.h
==============================================================================
--- projects/ofed/head/sys/amd64/include/endian.h	Fri Aug 13 22:08:42 2010	(r211292)
+++ projects/ofed/head/sys/amd64/include/endian.h	Fri Aug 13 22:39:11 2010	(r211293)
@@ -69,7 +69,7 @@ extern "C" {
 
 #if defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE_BUILTIN_CONSTANT_P)
 
-static inline __uint32_t
+static __inline __uint32_t
 __byte_swap_int_var(__uint32_t x)
 {
 	register __uint32_t _x;
@@ -96,7 +96,7 @@ __byte_swap_int_var(__uint32_t x)
 
 #endif	/* __OPTIMIZE__ */
 
-static inline __uint64_t
+static __inline __uint64_t
 __byte_swap_long_var(__uint64_t x)
 {
 	register __uint64_t _x;
@@ -127,7 +127,16 @@ __byte_swap_long_var(__uint64_t x)
 
 #endif	/* __OPTIMIZE__ */
 
-#define	__bswap16(_x)	(__uint16_t)((_x) << 8 | (_x) >> 8)
+#define	__byte_swap_short_const(_x)	(__uint16_t)((_x) << 8 | (_x) >> 8)
+
+static __inline __uint16_t
+__byte_swap_short_var(__uint16_t x)
+{
+	return __byte_swap_short_const(x);
+}
+
+#define	__bswap16(x)	(__builtin_constant_p(x) ? \
+	__byte_swap_short_const(x) : __byte_swap_short_var(x))
 
 #define	__htonl(x)	__bswap32(x)
 #define	__htons(x)	__bswap16(x)


More information about the svn-src-projects mailing list