Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Mar 2012 20:34:31 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r232745 - in head/sys: powerpc/include sparc64/include x86/include
Message-ID:  <201203092034.q29KYVjv024014@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Fri Mar  9 20:34:31 2012
New Revision: 232745
URL: http://svn.freebsd.org/changeset/base/232745

Log:
  Add casts to __uint16_t to the __bswap16() macros on all arches which
  didn't already have them.  This is because the ternary expression will
  return int, due to the Usual Arithmetic Conversions.  Such casts are not
  needed for the 32 and 64 bit variants.
  
  While here, add additional parentheses around the x86 variant, to
  protect against unintended consequences.
  
  MFC after:	2 weeks

Modified:
  head/sys/powerpc/include/endian.h
  head/sys/sparc64/include/endian.h
  head/sys/x86/include/endian.h

Modified: head/sys/powerpc/include/endian.h
==============================================================================
--- head/sys/powerpc/include/endian.h	Fri Mar  9 19:42:48 2012	(r232744)
+++ head/sys/powerpc/include/endian.h	Fri Mar  9 20:34:31 2012	(r232745)
@@ -124,8 +124,8 @@ __bswap64_var(__uint64_t _x)
 	    ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
 }
 
-#define	__bswap16(x)	(__is_constant(x) ? __bswap16_const(x) : \
-	__bswap16_var(x))
+#define	__bswap16(x)	((__uint16_t)(__is_constant(x) ? __bswap16_const(x) : \
+	__bswap16_var(x)))
 #define	__bswap32(x)	(__is_constant(x) ? __bswap32_const(x) : \
 	__bswap32_var(x))
 #define	__bswap64(x)	(__is_constant(x) ? __bswap64_const(x) : \

Modified: head/sys/sparc64/include/endian.h
==============================================================================
--- head/sys/sparc64/include/endian.h	Fri Mar  9 19:42:48 2012	(r232744)
+++ head/sys/sparc64/include/endian.h	Fri Mar  9 20:34:31 2012	(r232745)
@@ -109,8 +109,8 @@ __bswap64_var(__uint64_t _x)
 	    ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
 }
 
-#define	__bswap16(x)	(__is_constant(x) ? __bswap16_const(x) : \
-	__bswap16_var(x))
+#define	__bswap16(x)	((__uint16_t)(__is_constant(x) ? __bswap16_const(x) : \
+	__bswap16_var(x)))
 #define	__bswap32(x)	(__is_constant(x) ? __bswap32_const(x) : \
 	__bswap32_var(x))
 #define	__bswap64(x)	(__is_constant(x) ? __bswap64_const(x) : \

Modified: head/sys/x86/include/endian.h
==============================================================================
--- head/sys/x86/include/endian.h	Fri Mar  9 19:42:48 2012	(r232744)
+++ head/sys/x86/include/endian.h	Fri Mar  9 20:34:31 2012	(r232745)
@@ -71,8 +71,8 @@
 
 #ifdef __GNUCLIKE_BUILTIN_CONSTANT_P
 #define	__bswap16(x)				\
-	(__uint16_t)(__builtin_constant_p(x) ?	\
-	    __bswap16_gen((__uint16_t)(x)) : __bswap16_var(x))
+	((__uint16_t)(__builtin_constant_p(x) ?	\
+	    __bswap16_gen((__uint16_t)(x)) : __bswap16_var(x)))
 #define	__bswap32(x)			\
 	(__builtin_constant_p(x) ?	\
 	    __bswap32_gen((__uint32_t)(x)) : __bswap32_var(x))



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203092034.q29KYVjv024014>