s390/entry: rely on long-displacement facility
authorVasily Gorbik <gor@linux.ibm.com>
Tue, 28 Mar 2023 09:09:09 +0000 (11:09 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 4 Apr 2023 16:34:54 +0000 (18:34 +0200)
Since commit 4efd417f298b ("s390: raise minimum supported machine
generation to z10"), the long-displacement facility is assumed and
required for the kernel. Clean up a couple of places in the entry code,
where long-displacement could be used directly instead of using a base
register.

However, there are still a few other places where a base register has
to be used to extend short-displacement for the second lowcore page
access. Notably, boot/head.S still has to be built for z900, and in
mcck_int_handler, spt and lbear, which don't have long-displacements,
but need to access save areas at the second lowcore page.

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

index 58b85aedca22df589fcc639e4ce8b0de282d1f75..c41ec5a03d07a4f91d91f0bc0cd7b306d9edac40 100644 (file)
@@ -489,14 +489,13 @@ ENTRY(mcck_int_handler)
        la      %r1,4095                # validate r1
        spt     __LC_CPU_TIMER_SAVE_AREA-4095(%r1)      # validate cpu timer
        LBEAR   __LC_LAST_BREAK_SAVE_AREA-4095(%r1)             # validate bear
-       lmg     %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1)# validate gprs
+       lmg     %r0,%r15,__LC_GPREGS_SAVE_AREA          # validate gprs
        lmg     %r8,%r9,__LC_MCK_OLD_PSW
        TSTMSK  __LC_MCCK_CODE,MCCK_CODE_SYSTEM_DAMAGE
        jo      .Lmcck_panic            # yes -> rest of mcck code invalid
        TSTMSK  __LC_MCCK_CODE,MCCK_CODE_CR_VALID
        jno     .Lmcck_panic            # control registers invalid -> panic
-       la      %r14,4095
-       lctlg   %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r14) # validate ctl regs
+       lctlg   %c0,%c15,__LC_CREGS_SAVE_AREA           # validate ctl regs
        ptlb
        lghi    %r14,__LC_CPU_TIMER_SAVE_AREA
        mvc     __LC_MCCK_ENTER_TIMER(8),0(%r14)
@@ -594,8 +593,7 @@ ENTRY(restart_int_handler)
        stg     %r15,__LC_SAVE_AREA_RESTART
        TSTMSK  __LC_RESTART_FLAGS,RESTART_FLAG_CTLREGS,4
        jz      0f
-       la      %r15,4095
-       lctlg   %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r15)
+       lctlg   %c0,%c15,__LC_CREGS_SAVE_AREA
 0:     larl    %r15,.Lstosm_tmp
        stosm   0(%r15),0x04                    # turn dat on, keep irqs off
        lg      %r15,__LC_RESTART_STACK