s390/early: move access registers setup in C code
authorVasily Gorbik <gor@linux.ibm.com>
Thu, 14 Nov 2019 13:08:28 +0000 (14:08 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Wed, 20 Nov 2019 11:58:13 +0000 (12:58 +0100)
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/kernel/early.c
arch/s390/kernel/head64.S

index 0ed6ae6a8bdefc38db3934de8306e026d2677caa..db32a55daaec605a7b0042f7c4eb126996c9ccba 100644 (file)
@@ -30,6 +30,7 @@
 #include <asm/sclp.h>
 #include <asm/facility.h>
 #include <asm/boot_data.h>
+#include <asm/switch_to.h>
 #include "entry.h"
 
 static void __init reset_tod_clock(void)
@@ -271,6 +272,13 @@ static inline void setup_control_registers(void)
        __ctl_load(reg, 0, 0);
 }
 
+static inline void setup_access_registers(void)
+{
+       unsigned int acrs[NUM_ACRS] = { 0 };
+
+       restore_access_regs(acrs);
+}
+
 static int __init disable_vector_extension(char *str)
 {
        S390_lowcore.machine_flags &= ~MACHINE_FLAG_VX;
@@ -329,5 +337,6 @@ void __init startup_init(void)
        setup_topology();
        sclp_early_detect();
        setup_control_registers();
+       setup_access_registers();
        lockdep_on();
 }
index 9d649abddffd97bbfba3eb0011fae2c71bb4245e..b9e585f528a69affdc8ba3e200e82bd44d3ef68f 100644 (file)
@@ -35,13 +35,8 @@ ENTRY(startup_continue)
 #ifdef CONFIG_KASAN
        brasl   %r14,kasan_early_init
 #endif
-#
-# Early machine initialization and detection functions.
-#
-       brasl   %r14,startup_init
-
-       lam     0,15,.Laregs-.LPG1(%r13)        # load acrs needed by uaccess
-       brasl   %r14,start_kernel               # go to C code
+       brasl   %r14,startup_init               # s390 specific early init
+       brasl   %r14,start_kernel               # common init code
 #
 # We returned from start_kernel ?!? PANIK
 #
@@ -51,4 +46,3 @@ ENTRY(startup_continue)
        .align  16
 .LPG1:
 .Ldw:  .quad   0x0002000180000000,0x0000000000000000
-.Laregs:.long  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0