s390/jump_label: use "i" constraint for clang
authorVasily Gorbik <gor@linux.ibm.com>
Wed, 25 Dec 2019 13:13:32 +0000 (14:13 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Wed, 22 Jan 2020 12:05:35 +0000 (13:05 +0100)
commitc4e5c229b610ac974f284c760e47c40e651258f2
tree06dcceb9bf6dafe8c2bf0092f9c806032ae09c73
parentee09c91480b10f306bfd1856776f673b4efe68a5
s390/jump_label: use "i" constraint for clang

Currently kernel build fails under clang if jump labels are enabled.
The problem is "X" constraint usage "Any operand whatsoever is allowed",
for which clang produces the following:
.pushsection __jump_table,"aw"
.balign 8
.long   0b-.,.Ltmp577-.
.quad   %r0+0-. # %r0 is not allowed here
.popsection

Under gcc constraints "X" or "jdd" (gcc > 9) are used for static keys.
Ideally, we'd have used "i" for gcc, but it doesn't work in all cases
with -fPIC code. This is gcc-specific problem that doesn't exist in llvm.
Since clang does not have "jdd" simply always use "i" constraint for it.

Suggested-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/jump_label.h