Search Linux Wireless

[PATCH 07/10] rt2x00: Use __builtin_choose_expr() instead of ?:

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



To really force the FIELD macros to determine
the first bit of the register field we should
use the __builtin_choose_expr() function.

Signed-off-by: Ivo van Doorn <IvDoorn@xxxxxxxxx>
---
 drivers/net/wireless/rt2x00/rt2x00reg.h |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00reg.h b/drivers/net/wireless/rt2x00/rt2x00reg.h
index c3f1202..7e88ce5 100644
--- a/drivers/net/wireless/rt2x00/rt2x00reg.h
+++ b/drivers/net/wireless/rt2x00/rt2x00reg.h
@@ -145,23 +145,27 @@ struct rt2x00_field32 {
  * compile-time rather then run-time.
  */
 #define compile_ffs2(__x) \
-	( ((__x) & 0x1) ? 0 : 1 )
+	__builtin_choose_expr(((__x) & 0x1), 0, 1)
 
 #define compile_ffs4(__x) \
-	( ((__x) & 0x3) ? \
-	    compile_ffs2(__x) : (compile_ffs2((__x) >> 2) + 2) )
+	__builtin_choose_expr(((__x) & 0x3), \
+			      (compile_ffs2((__x))), \
+			      (compile_ffs2((__x) >> 2) + 2))
 
 #define compile_ffs8(__x) \
-	( ((__x) & 0xf) ? \
-	    compile_ffs4(__x) : (compile_ffs4((__x) >> 4) + 4) )
+	__builtin_choose_expr(((__x) & 0xf), \
+			      (compile_ffs4((__x))), \
+			      (compile_ffs4((__x) >> 4) + 4))
 
 #define compile_ffs16(__x) \
-	( ((__x) & 0xff) ? \
-	    compile_ffs8(__x) : (compile_ffs8((__x) >> 8) + 8) )
+	__builtin_choose_expr(((__x) & 0xff), \
+			      (compile_ffs8((__x))), \
+			      (compile_ffs8((__x) >> 8) + 8))
 
 #define compile_ffs32(__x) \
-	( ((__x) & 0xffff) ? \
-	    compile_ffs16(__x) : (compile_ffs16((__x) >> 16) + 16) )
+	__builtin_choose_expr(((__x) & 0xffff), \
+			      (compile_ffs16((__x))), \
+			      (compile_ffs16((__x) >> 16) + 16))
 
 /*
  * This macro will check the requirements for the FIELD{8,16,32} macros
-- 
1.5.5.3

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux