s390: add support for IBM z14 machines
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 12 Apr 2017 12:17:25 +0000 (14:17 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 26 Jul 2017 06:25:15 +0000 (08:25 +0200)
Add detection for machine type 0x3906 and set the ELF platform name
to z14. Add the miscellaneous-instruction-extension 2 facility to
the list of facilities for z14.

And allow to generate code that only runs on a z14 machine.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/Kconfig
arch/s390/Makefile
arch/s390/kernel/setup.c
arch/s390/tools/gen_facilities.c

index 7eeb75d758c196449e6ed90527c731b945e97e49..48af970320cbdf7a7cdbfff88a6e91a5f1c91b46 100644 (file)
@@ -222,6 +222,10 @@ config HAVE_MARCH_Z13_FEATURES
        def_bool n
        select HAVE_MARCH_ZEC12_FEATURES
 
+config HAVE_MARCH_Z14_FEATURES
+       def_bool n
+       select HAVE_MARCH_Z13_FEATURES
+
 choice
        prompt "Processor type"
        default MARCH_Z196
@@ -282,6 +286,14 @@ config MARCH_Z13
          2964 series). The kernel will be slightly faster but will not work on
          older machines.
 
+config MARCH_Z14
+       bool "IBM z14"
+       select HAVE_MARCH_Z14_FEATURES
+       help
+         Select this to enable optimizations for IBM z14 (3906 series).
+         The kernel will be slightly faster but will not work on older
+         machines.
+
 endchoice
 
 config MARCH_Z900_TUNE
@@ -305,6 +317,9 @@ config MARCH_ZEC12_TUNE
 config MARCH_Z13_TUNE
        def_bool TUNE_Z13 || MARCH_Z13 && TUNE_DEFAULT
 
+config MARCH_Z14_TUNE
+       def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
+
 choice
        prompt "Tune code generation"
        default TUNE_DEFAULT
@@ -343,6 +358,9 @@ config TUNE_ZEC12
 config TUNE_Z13
        bool "IBM z13"
 
+config TUNE_Z14
+       bool "IBM z14"
+
 endchoice
 
 config 64BIT
index 54e00526b8dfcf1b8d3f21278b1626551dc68459..dac821cfcd430310a95624754d7dd814bcd7705b 100644 (file)
@@ -31,7 +31,8 @@ mflags-$(CONFIG_MARCH_Z9_109) := -march=z9-109
 mflags-$(CONFIG_MARCH_Z10)    := -march=z10
 mflags-$(CONFIG_MARCH_Z196)   := -march=z196
 mflags-$(CONFIG_MARCH_ZEC12)  := -march=zEC12
-mflags-$(CONFIG_MARCH_Z13)   := -march=z13
+mflags-$(CONFIG_MARCH_Z13)    := -march=z13
+mflags-$(CONFIG_MARCH_Z14)    := -march=z14
 
 export CC_FLAGS_MARCH := $(mflags-y)
 
@@ -44,7 +45,8 @@ cflags-$(CONFIG_MARCH_Z9_109_TUNE)    += -mtune=z9-109
 cflags-$(CONFIG_MARCH_Z10_TUNE)                += -mtune=z10
 cflags-$(CONFIG_MARCH_Z196_TUNE)       += -mtune=z196
 cflags-$(CONFIG_MARCH_ZEC12_TUNE)      += -mtune=zEC12
-cflags-$(CONFIG_MARCH_Z13_TUNE)        += -mtune=z13
+cflags-$(CONFIG_MARCH_Z13_TUNE)                += -mtune=z13
+cflags-$(CONFIG_MARCH_Z14_TUNE)                += -mtune=z14
 
 cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include
 
index e8b84894b650cc3328f9f591f8f673f7376f55ea..a50238e17867006a41787bcdd39493671cac979e 100644 (file)
@@ -818,6 +818,9 @@ static int __init setup_hwcaps(void)
        case 0x2965:
                strcpy(elf_platform, "z13");
                break;
+       case 0x3906:
+               strcpy(elf_platform, "z14");
+               break;
        }
 
        /*
index 025ea20fc4b4b8d0abb0ec038f99599cecb289f2..3e878ecf522cbce83e3e8e4e04a548409341995a 100644 (file)
@@ -53,6 +53,9 @@ static struct facility_def facility_defs[] = {
 #endif
 #ifdef CONFIG_HAVE_MARCH_Z13_FEATURES
                        53, /* load-and-zero-rightmost-byte, etc. */
+#endif
+#ifdef CONFIG_HAVE_MARCH_Z14_FEATURES
+                       58, /* miscellaneous-instruction-extension 2 */
 #endif
                        -1 /* END */
                }