s390/mm: shorten addressing mode initialization
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 3 Sep 2012 05:08:06 +0000 (07:08 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 26 Sep 2012 13:45:06 +0000 (15:45 +0200)
Shorten the code for addressing mode initialization. Also add missing
__init annotations, since this code is only used during kernel initialization.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/setup.c

index 555f985226f51535c3be49aa3feb03cd95d55d60..7d27b0ab304bfe92e7ba162b7afab48dbe1f7092 100644 (file)
@@ -305,7 +305,7 @@ early_param("vmalloc", parse_vmalloc);
 unsigned int s390_user_mode = PRIMARY_SPACE_MODE;
 EXPORT_SYMBOL_GPL(s390_user_mode);
 
-static int set_amode_primary(void)
+static void __init set_user_mode_primary(void)
 {
        psw_kernel_bits = (psw_kernel_bits & ~PSW_MASK_ASC) | PSW_ASC_HOME;
        psw_user_bits = (psw_user_bits & ~PSW_MASK_ASC) | PSW_ASC_PRIMARY;
@@ -313,14 +313,7 @@ static int set_amode_primary(void)
        psw32_user_bits =
                (psw32_user_bits & ~PSW32_MASK_ASC) | PSW32_ASC_PRIMARY;
 #endif
-
-       if (MACHINE_HAS_MVCOS) {
-               memcpy(&uaccess, &uaccess_mvcos_switch, sizeof(uaccess));
-               return 1;
-       } else {
-               memcpy(&uaccess, &uaccess_pt, sizeof(uaccess));
-               return 0;
-       }
+       uaccess = MACHINE_HAS_MVCOS ? uaccess_mvcos_switch : uaccess_pt;
 }
 
 static int __init early_parse_user_mode(char *p)
@@ -335,16 +328,15 @@ static int __init early_parse_user_mode(char *p)
 }
 early_param("user_mode", early_parse_user_mode);
 
-static void setup_addressing_mode(void)
+static void __init setup_addressing_mode(void)
 {
-       if (s390_user_mode == PRIMARY_SPACE_MODE) {
-               if (set_amode_primary())
-                       pr_info("Address spaces switched, "
-                               "mvcos available\n");
-               else
-                       pr_info("Address spaces switched, "
-                               "mvcos not available\n");
-       }
+       if (s390_user_mode != PRIMARY_SPACE_MODE)
+               return;
+       set_user_mode_primary();
+       if (MACHINE_HAS_MVCOS)
+               pr_info("Address spaces switched, mvcos available\n");
+       else
+               pr_info("Address spaces switched, mvcos not available\n");
 }
 
 void *restart_stack __attribute__((__section__(".data")));