linux/arch
Peter Zijlstra d420acd816 jump_label/x86: Work around asm build bug on older/backported GCCs
Boris reported that gcc version 4.4.4 20100503 (Red Hat
4.4.4-2) fails to build linux-next kernels that have
this fresh commit via the locking tree:

  11276d5306 ("locking/static_keys: Add a new static_key interface")

The problem appears to be that even though @key and @branch are
compile time constants, it doesn't see the following expression
as an immediate value:

   &((char *)key)[branch]

More recent GCCs don't appear to have this problem.

In particular, Red Hat backported the 'asm goto' feature into 4.4,
'normal' 4.4 compilers will not have this feature and thus not
run into this asm.

The workaround is to supply both values to the asm as immediates
and do the addition in asm.

Suggested-by: H. Peter Anvin <hpa@zytor.com>
Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Tested-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-08-13 08:44:43 +02:00
..
alpha atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
arc atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
arm locking, ARM, atomics: Define our SMP atomics in terms of _relaxed() operations 2015-08-12 11:59:10 +02:00
arm64 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
avr32 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
blackfin atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
c6x mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
cris mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
frv atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
h8300 atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
hexagon atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
ia64 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
m32r atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
m68k atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
metag Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
microblaze mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
mips Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
mn10300 atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
nios2 mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
openrisc mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
parisc Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
powerpc Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
s390 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
score mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
sh atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
sparc Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
tile atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
um Merge branch 'x86/urgent' into x86/asm, before applying dependent patches 2015-07-31 10:23:35 +02:00
unicore32 mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
x86 jump_label/x86: Work around asm build bug on older/backported GCCs 2015-08-13 08:44:43 +02:00
xtensa Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
.gitignore
Kconfig locking/static_keys: Add selftest 2015-08-03 11:34:16 +02:00