From: Heiko Carstens <hca@linux.ibm.com>
To: Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Jonas Paulsson <paulsson@linux.vnet.ibm.com>,
Ulrich Weigand <ulrich.weigand@de.ibm.com>,
Masahiro Yamada <masahiroy@kernel.org>,
Alexander Egorenkov <egorenar@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>,
Andreas Krebbel <krebbel@linux.ibm.com>,
Nathan Chancellor <natechancellor@gmail.com>,
Nick Desaulniers <ndesaulniers@google.com>,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: [PATCH 5/8] s390/purgatory: workaround llvm's IAS limitations
Date: Wed, 11 May 2022 14:05:29 +0200 [thread overview]
Message-ID: <20220511120532.2228616-6-hca@linux.ibm.com> (raw)
In-Reply-To: <20220511120532.2228616-1-hca@linux.ibm.com>
llvm's integrated assembler cannot handle immediate values which are
calculated with two local labels:
arch/s390/purgatory/head.S:139:11: error: invalid operand for instruction
aghi %r8,-(.base_crash-purgatory_start)
Workaround this by partially rewriting the code.
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
---
arch/s390/purgatory/head.S | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/arch/s390/purgatory/head.S b/arch/s390/purgatory/head.S
index 3d1c31e0cf3d..ac1a27a20b66 100644
--- a/arch/s390/purgatory/head.S
+++ b/arch/s390/purgatory/head.S
@@ -44,11 +44,14 @@
.endm
.macro MEMSWAP dst,src,buf,len
-10: cghi \len,bufsz
+10: larl %r0,purgatory_end
+ larl %r1,stack
+ slgr %r0,%r1
+ cgr \len,%r0
jh 11f
lgr %r4,\len
j 12f
-11: lghi %r4,bufsz
+11: lgr %r4,%r0
12: MEMCPY \buf,\dst,%r4
MEMCPY \dst,\src,%r4
@@ -135,12 +138,18 @@ ENTRY(purgatory_start)
.start_crash_kernel:
/* Location of purgatory_start in crash memory */
+ larl %r0,.base_crash
+ larl %r1,purgatory_start
+ slgr %r0,%r1
lgr %r8,%r13
- aghi %r8,-(.base_crash-purgatory_start)
+ sgr %r8,%r0
/* Destination for this code i.e. end of memory to be swapped. */
+ larl %r0,purgatory_end
+ larl %r1,purgatory_start
+ slgr %r0,%r1
lg %r9,crash_size-.base_crash(%r13)
- aghi %r9,-(purgatory_end-purgatory_start)
+ sgr %r9,%r0
/* Destination in crash memory, i.e. same as r9 but in crash memory. */
lg %r10,crash_start-.base_crash(%r13)
@@ -149,15 +158,19 @@ ENTRY(purgatory_start)
/* Buffer location (in crash memory) and size. As the purgatory is
* behind the point of no return it can re-use the stack as buffer.
*/
- lghi %r11,bufsz
+ larl %r11,purgatory_end
larl %r12,stack
+ slgr %r11,%r12
MEMCPY %r12,%r9,%r11 /* dst -> (crash) buf */
MEMCPY %r9,%r8,%r11 /* self -> dst */
/* Jump to new location. */
lgr %r7,%r9
- aghi %r7,.jump_to_dst-purgatory_start
+ larl %r0,.jump_to_dst
+ larl %r1,purgatory_start
+ slgr %r0,%r1
+ agr %r7,%r0
br %r7
.jump_to_dst:
@@ -169,7 +182,9 @@ ENTRY(purgatory_start)
/* Load new buffer location after jump */
larl %r7,stack
- aghi %r10,stack-purgatory_start
+ larl %r0,purgatory_start
+ slgrk %r0,%r7,%r0
+ agr %r10,%r0
MEMCPY %r10,%r7,%r11 /* (new) buf -> (crash) buf */
/* Now the code is set up to run from its designated location. Start
--
2.32.0
next prev parent reply other threads:[~2022-05-11 12:07 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-11 12:05 [PATCH 0/8] s390: allow to build with llvm's integrated assembler Heiko Carstens
2022-05-11 12:05 ` [PATCH 1/8] s390/alternatives: provide identical sized orginal/alternative sequences Heiko Carstens
2022-05-13 9:17 ` Vasily Gorbik
2022-05-11 12:05 ` [PATCH 2/8] s390/alternatives: remove padding generation code Heiko Carstens
2022-05-11 17:02 ` Heiko Carstens
2022-05-13 9:18 ` Vasily Gorbik
2022-05-11 12:05 ` [PATCH 3/8] s390/entry: shorten OUTSIDE macro Heiko Carstens
2022-05-12 15:59 ` kernel test robot
2022-05-12 16:20 ` kernel test robot
2022-05-12 17:21 ` Heiko Carstens
2022-05-12 18:00 ` Nick Desaulniers
2022-05-12 19:15 ` Heiko Carstens
2022-05-12 19:25 ` Nick Desaulniers
2022-05-13 12:29 ` Heiko Carstens
2022-05-11 12:05 ` [PATCH 4/8] s390/entry: workaround llvm's IAS limitations Heiko Carstens
2022-05-11 17:30 ` Nathan Chancellor
2022-05-12 17:24 ` Heiko Carstens
2022-05-12 19:06 ` Nathan Chancellor
2022-05-12 19:16 ` Heiko Carstens
2022-05-16 9:07 ` Alexander Gordeev
2022-05-16 10:19 ` Heiko Carstens
2022-05-16 10:42 ` Jonas Paulsson
2022-05-16 11:11 ` Alexander Gordeev
2022-05-16 14:05 ` Heiko Carstens
2022-05-11 12:05 ` Heiko Carstens [this message]
2022-05-11 19:54 ` [PATCH 5/8] s390/purgatory: " Nick Desaulniers
2022-05-12 17:26 ` Heiko Carstens
2022-05-12 17:25 ` Heiko Carstens
2022-05-11 12:05 ` [PATCH 6/8] s390/boot: workaround llvm IAS bug Heiko Carstens
2022-05-11 19:50 ` Nick Desaulniers
2022-05-11 12:05 ` [PATCH 7/8] s390/boot: do not emit debug info for assembly with llvm's IAS Heiko Carstens
2022-05-11 19:40 ` Nick Desaulniers
2022-05-12 17:30 ` Heiko Carstens
2022-05-11 12:05 ` [PATCH 8/8] scripts/min-tool-version.sh: raise minimum clang version to 14.0.0 for s390 Heiko Carstens
2022-05-11 19:27 ` Nick Desaulniers
2022-05-11 19:56 ` Nick Desaulniers
2022-05-12 19:06 ` Heiko Carstens
2022-05-11 19:48 ` [PATCH 0/8] s390: allow to build with llvm's integrated assembler Nick Desaulniers
2022-05-12 19:04 ` Heiko Carstens
2022-05-11 20:52 ` Nathan Chancellor
2022-05-12 19:03 ` Heiko Carstens
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220511120532.2228616-6-hca@linux.ibm.com \
--to=hca@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=egorenar@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=krebbel@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=natechancellor@gmail.com \
--cc=ndesaulniers@google.com \
--cc=paulsson@linux.vnet.ibm.com \
--cc=svens@linux.ibm.com \
--cc=ulrich.weigand@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox