Heiko Carstens e9953b729b s390/boot: workaround llvm IAS bug
For at least the mvc and clc instructions llvm's integrated assembler can
generate incorrect code. In particular this happens with decompressor boot
code. The reason seems to be that relocations for the second displacement
of each instruction are at incorrect locations (-/+: gas vs llvm IAS):

mvc     __LC_IO_NEW_PSW(16),.Lnewpsw

results in

        4:      d2 0f 01 f0 00 00       mvc     496(16,%r0),0
-                       8: R_390_12     .head.text+0x10
+		       6: R_390_12     .head.text+0x10

and
clc     0(3,%r4),.L_hdr
results in

      258:      d5 02 40 00 00 00       clc     0(3,%r4),0
-                       25c: R_390_12   .head.text+0x324
+		       25a: R_390_12   .head.text+0x324

Workaround this by writing the code in a different way.

Tested-by: Nathan Chancellor <nathan@kernel.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://github.com/llvm/llvm-project/issues/55411
Link: https://lore.kernel.org/r/20220511120532.2228616-7-hca@linux.ibm.com
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
2022-05-17 15:16:29 +02:00
..
2022-04-23 13:53:21 -07:00
2022-04-22 13:49:26 -07:00
2022-03-28 17:29:53 -07:00
2022-03-28 17:29:53 -07:00
2022-03-31 11:59:03 -07:00
2022-04-02 12:14:38 -07:00
2022-03-28 17:29:53 -07:00
2022-03-28 17:29:53 -07:00
2022-03-31 11:59:03 -07:00
2022-04-24 12:11:20 -07:00
2022-04-22 17:58:36 -07:00
2022-05-17 15:16:29 +02:00
2022-04-02 12:33:31 -07:00