]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/entry: Make __sie64a() ready for lowcore relocation
authorSven Schnelle <svens@linux.ibm.com>
Mon, 22 Jul 2024 13:41:16 +0000 (15:41 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 23 Jul 2024 14:02:32 +0000 (16:02 +0200)
In preparation of having lowcore at different address than zero,
add the base register to all lowcore accesses in __sie64a().

Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/kernel/entry.S

index df351622c94c7e58e2af84a9ee209b2ee5a4f7f3..618b8b774932655ae2d810cffe777c386c906b32 100644 (file)
@@ -28,6 +28,7 @@
 #include <asm/setup.h>
 #include <asm/nmi.h>
 #include <asm/nospec-insn.h>
+#include <asm/lowcore.h>
 
 _LPP_OFFSET    = __LC_LPP
 
@@ -184,7 +185,8 @@ SYM_FUNC_END(__switch_to_asm)
  */
 SYM_FUNC_START(__sie64a)
        stmg    %r6,%r14,__SF_GPRS(%r15)        # save kernel registers
-       lg      %r14,__LC_CURRENT
+       GET_LC  %r13
+       lg      %r14,__LC_CURRENT(%r13)
        stg     %r2,__SF_SIE_CONTROL_PHYS(%r15) # save sie block physical..
        stg     %r3,__SF_SIE_CONTROL(%r15)      # ...and virtual addresses
        stg     %r4,__SF_SIE_SAVEAREA(%r15)     # save guest register save area
@@ -211,8 +213,9 @@ SYM_FUNC_START(__sie64a)
 .Lsie_skip:
        lg      %r14,__SF_SIE_CONTROL(%r15)     # get control block pointer
        ni      __SIE_PROG0C+3(%r14),0xfe       # no longer in SIE
-       lctlg   %c1,%c1,__LC_KERNEL_ASCE        # load primary asce
-       lg      %r14,__LC_CURRENT
+       GET_LC  %r14
+       lctlg   %c1,%c1,__LC_KERNEL_ASCE(%r14)  # load primary asce
+       lg      %r14,__LC_CURRENT(%r14)
        mvi     __TI_sie(%r14),0
 # some program checks are suppressing. C code (e.g. do_protection_exception)
 # will rewind the PSW by the ILC, which is often 4 bytes in case of SIE. There