tools: Simplify BITS_PER_LONG define
Do it using (__CHAR_BIT__ * __SIZEOF_LONG__), simpler, works everywhere, reduces the complexity by ditching CONFIG_64BIT, that was being synthesized from yet another set of defines, which proved fragile, breaking the build on linux-next for no obvious reasons. Committer Note: Except on: gcc version 4.1.2 20080704 (Red Hat 4.1.2-55) Fallback to __WORDSIZE in that case... Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/20160715072243.GP30154@twins.programming.kicks-ass.net Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
32a951b4fd
Коммит
e81fcd4372
|
@ -3,31 +3,12 @@
|
|||
|
||||
#include <uapi/asm-generic/bitsperlong.h>
|
||||
|
||||
/*
|
||||
* In the kernel, where this file comes from, we can rely on CONFIG_64BIT,
|
||||
* here we have to make amends with what the various compilers provides us
|
||||
* to figure out if we're on a 64-bit machine...
|
||||
*/
|
||||
#ifdef __SIZEOF_LONG__
|
||||
# if __SIZEOF_LONG__ == 8
|
||||
# define CONFIG_64BIT
|
||||
# endif
|
||||
#define BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__)
|
||||
#else
|
||||
# ifdef __WORDSIZE
|
||||
# if __WORDSIZE == 64
|
||||
# define CONFIG_64BIT
|
||||
# endif
|
||||
# else
|
||||
# error Failed to determine BITS_PER_LONG value
|
||||
# endif
|
||||
#define BITS_PER_LONG __WORDSIZE
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define BITS_PER_LONG 64
|
||||
#else
|
||||
#define BITS_PER_LONG 32
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
#if BITS_PER_LONG != __BITS_PER_LONG
|
||||
#error Inconsistent word size. Check asm/bitsperlong.h
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче