]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/entry: Add base register to CHECK_VMAP_STACK/CHECK_STACK macro
authorSven Schnelle <svens@linux.ibm.com>
Mon, 22 Jul 2024 13:41:19 +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 CHECK_VMAP_STACK and CHECK_STACK. No
functional change, because %r0 is passed to the macro.

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

index 7a5e11d9db8be1ecec5948521d7e2c7defe2d676..1d12f3c29a436a617e319ecb3fdb47b41cef71a7 100644 (file)
@@ -49,30 +49,30 @@ _LPP_OFFSET = __LC_LPP
                ALT_FACILITY(193)
        .endm
 
-       .macro  CHECK_STACK savearea
+       .macro  CHECK_STACK savearea, lowcore
 #ifdef CONFIG_CHECK_STACK
        tml     %r15,THREAD_SIZE - CONFIG_STACK_GUARD
-       lghi    %r14,\savearea
+       la      %r14,\savearea(\lowcore)
        jz      stack_overflow
 #endif
        .endm
 
-       .macro  CHECK_VMAP_STACK savearea,oklabel
+       .macro  CHECK_VMAP_STACK savearea, lowcore, oklabel
 #ifdef CONFIG_VMAP_STACK
        lgr     %r14,%r15
        nill    %r14,0x10000 - THREAD_SIZE
        oill    %r14,STACK_INIT_OFFSET
-       clg     %r14,__LC_KERNEL_STACK
+       clg     %r14,__LC_KERNEL_STACK(\lowcore)
        je      \oklabel
-       clg     %r14,__LC_ASYNC_STACK
+       clg     %r14,__LC_ASYNC_STACK(\lowcore)
        je      \oklabel
-       clg     %r14,__LC_MCCK_STACK
+       clg     %r14,__LC_MCCK_STACK(\lowcore)
        je      \oklabel
-       clg     %r14,__LC_NODAT_STACK
+       clg     %r14,__LC_NODAT_STACK(\lowcore)
        je      \oklabel
-       clg     %r14,__LC_RESTART_STACK
+       clg     %r14,__LC_RESTART_STACK(\lowcore)
        je      \oklabel
-       lghi    %r14,\savearea
+       la      %r14,\savearea(\lowcore)
        j       stack_overflow
 #else
        j       \oklabel
@@ -331,10 +331,10 @@ SYM_CODE_START(pgm_check_handler)
        jnz     2f                      # -> enabled, can't be a double fault
        tm      __LC_PGM_ILC+3,0x80     # check for per exception
        jnz     .Lpgm_svcper            # -> single stepped svc
-2:     CHECK_STACK __LC_SAVE_AREA_SYNC
+2:     CHECK_STACK __LC_SAVE_AREA_SYNC,%r0
        aghi    %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE)
        # CHECK_VMAP_STACK branches to stack_overflow or 4f
-       CHECK_VMAP_STACK __LC_SAVE_AREA_SYNC,4f
+       CHECK_VMAP_STACK __LC_SAVE_AREA_SYNC,%r0,4f
 3:     lg      %r15,__LC_KERNEL_STACK
 4:     la      %r11,STACK_FRAME_OVERHEAD(%r15)
        xc      __PT_FLAGS(8,%r11),__PT_FLAGS(%r11)
@@ -406,7 +406,7 @@ SYM_CODE_START(\name)
        BPENTER __SF_SIE_FLAGS(%r15),_TIF_ISOLATE_BP_GUEST
        SIEEXIT __SF_SIE_CONTROL(%r15),%r0
 #endif
-0:     CHECK_STACK __LC_SAVE_AREA_ASYNC
+0:     CHECK_STACK __LC_SAVE_AREA_ASYNC,%r0
        aghi    %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE)
        j       2f
 1:     lctlg   %c1,%c1,__LC_KERNEL_ASCE