diff options
author | H. Peter Anvin <hpa@zytor.com> | 2016-06-08 21:38:38 +0200 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2016-06-08 21:41:20 +0200 |
commit | 117780eef7740729e803bdcc0d5f2f48137ea8e3 (patch) | |
tree | 63bd519e1d8b115d332fcb6e63ee4f94ee235161 /arch/x86/boot/bitops.h | |
parent | x86, bitops: remove use of "sbb" to return CF (diff) | |
download | linux-117780eef7740729e803bdcc0d5f2f48137ea8e3.tar.xz linux-117780eef7740729e803bdcc0d5f2f48137ea8e3.zip |
x86, asm: use bool for bitops and other assembly outputs
The gcc people have confirmed that using "bool" when combined with
inline assembly always is treated as a byte-sized operand that can be
assumed to be 0 or 1, which is exactly what the SET instruction
emits. Change the output types and intermediate variables of as many
operations as practical to "bool".
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Link: http://lkml.kernel.org/r/1465414726-197858-3-git-send-email-hpa@linux.intel.com
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Reviewed-by: Borislav Petkov <bp@suse.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Diffstat (limited to 'arch/x86/boot/bitops.h')
-rw-r--r-- | arch/x86/boot/bitops.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/boot/bitops.h b/arch/x86/boot/bitops.h index 878e4b9940d9..0d41d68131cc 100644 --- a/arch/x86/boot/bitops.h +++ b/arch/x86/boot/bitops.h @@ -16,14 +16,16 @@ #define BOOT_BITOPS_H #define _LINUX_BITOPS_H /* Inhibit inclusion of <linux/bitops.h> */ -static inline int constant_test_bit(int nr, const void *addr) +#include <linux/types.h> + +static inline bool constant_test_bit(int nr, const void *addr) { const u32 *p = (const u32 *)addr; return ((1UL << (nr & 31)) & (p[nr >> 5])) != 0; } -static inline int variable_test_bit(int nr, const void *addr) +static inline bool variable_test_bit(int nr, const void *addr) { - u8 v; + bool v; const u32 *p = (const u32 *)addr; asm("btl %2,%1; setc %0" : "=qm" (v) : "m" (*p), "Ir" (nr)); |