diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2007-10-17 12:04:38 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@inhelltoy.tec.linutronix.de> | 2007-10-17 14:16:27 -0400 |
commit | d2ccc3fdde1a860b970109ad78865b7e44d3fc0c (patch) | |
tree | 1dd278864b09731527811f163e346ba8fc26ea32 | |
parent | 92b2dc79c3bb3f08afae6c0feaeea593b9c83a76 (diff) |
x86: Eliminate result signage problem in asm-x86_64/bitops.h
The return type of __scanbit() doesn't match the return type of
find_{first,next}_bit(). Thus when you construct something like
this:
boolean ? __scanbit() : find_first_bit()
you get an unsigned long result if "boolean" is true, and a signed
long result if "boolean" is false.
In file included from /home/cel/src/linux/include/linux/mmzone.h:15,
from /home/cel/src/linux/include/linux/gfp.h:4,
from /home/cel/src/linux/include/linux/slab.h:14,
from /home/cel/src/linux/include/linux/percpu.h:5,
from
/home/cel/src/linux/include/linux/rcupdate.h:41,
from /home/cel/src/linux/include/linux/dcache.h:10,
from /home/cel/src/linux/include/linux/fs.h:275,
from /home/cel/src/linux/fs/nfs/sysctl.c:9:
/home/cel/src/linux/include/linux/nodemask.h: In function
â__first_nodeâ:
/home/cel/src/linux/include/linux/nodemask.h:229: warning: signed and
unsigned type in conditional expression
/home/cel/src/linux/include/linux/nodemask.h: In function
â__next_nodeâ:
/home/cel/src/linux/include/linux/nodemask.h:235: warning: signed and
unsigned type in conditional expression
/home/cel/src/linux/include/linux/nodemask.h: In function
â__first_unset_nodeâ:
/home/cel/src/linux/include/linux/nodemask.h:253: warning: signed and
unsigned type in conditional expression
[ tglx: arch/x86 adaptation ]
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | include/asm-x86/bitops_64.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/asm-x86/bitops_64.h b/include/asm-x86/bitops_64.h index d4dbbe5f7bd9..1d7d9b4bcacb 100644 --- a/include/asm-x86/bitops_64.h +++ b/include/asm-x86/bitops_64.h | |||
@@ -260,7 +260,7 @@ extern long find_first_bit(const unsigned long * addr, unsigned long size); | |||
260 | extern long find_next_bit(const unsigned long * addr, long size, long offset); | 260 | extern long find_next_bit(const unsigned long * addr, long size, long offset); |
261 | 261 | ||
262 | /* return index of first bet set in val or max when no bit is set */ | 262 | /* return index of first bet set in val or max when no bit is set */ |
263 | static inline unsigned long __scanbit(unsigned long val, unsigned long max) | 263 | static inline long __scanbit(unsigned long val, unsigned long max) |
264 | { | 264 | { |
265 | asm("bsfq %1,%0 ; cmovz %2,%0" : "=&r" (val) : "r" (val), "r" (max)); | 265 | asm("bsfq %1,%0 ; cmovz %2,%0" : "=&r" (val) : "r" (val), "r" (max)); |
266 | return val; | 266 | return val; |