s390: add z13 code generation support
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Jan 2015 16:50:19 +0000 (17:50 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 22 Jan 2015 11:15:57 +0000 (12:15 +0100)
Allow to generate code that only runs on z13 machines.

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

index e79c3eab40b9e822ef2e511fa5abaaa1a076439b..06c6d9ab5a8da73c8ed08fbcf35843a743177299 100644 (file)
@@ -185,6 +185,10 @@ config HAVE_MARCH_ZEC12_FEATURES
        def_bool n
        select HAVE_MARCH_Z196_FEATURES
 
        def_bool n
        select HAVE_MARCH_Z196_FEATURES
 
+config HAVE_MARCH_Z13_FEATURES
+       def_bool n
+       select HAVE_MARCH_ZEC12_FEATURES
+
 choice
        prompt "Processor type"
        default MARCH_G5
 choice
        prompt "Processor type"
        default MARCH_G5
@@ -244,6 +248,14 @@ config MARCH_ZEC12
          2827 series). The kernel will be slightly faster but will not work on
          older machines.
 
          2827 series). The kernel will be slightly faster but will not work on
          older machines.
 
+config MARCH_Z13
+       bool "IBM z13"
+       select HAVE_MARCH_Z13_FEATURES if 64BIT
+       help
+         Select this to enable optimizations for IBM z13 (2964 series).
+         The kernel will be slightly faster but will not work on older
+         machines.
+
 endchoice
 
 config MARCH_G5_TUNE
 endchoice
 
 config MARCH_G5_TUNE
@@ -267,6 +279,9 @@ config MARCH_Z196_TUNE
 config MARCH_ZEC12_TUNE
        def_bool TUNE_ZEC12 || MARCH_ZEC12 && TUNE_DEFAULT
 
 config MARCH_ZEC12_TUNE
        def_bool TUNE_ZEC12 || MARCH_ZEC12 && TUNE_DEFAULT
 
+config MARCH_Z13_TUNE
+       def_bool TUNE_Z13 || MARCH_Z13 && TUNE_DEFAULT
+
 choice
        prompt "Tune code generation"
        default TUNE_DEFAULT
 choice
        prompt "Tune code generation"
        default TUNE_DEFAULT
@@ -305,6 +320,9 @@ config TUNE_Z196
 config TUNE_ZEC12
        bool "IBM zBC12 and zEC12"
 
 config TUNE_ZEC12
        bool "IBM zBC12 and zEC12"
 
+config TUNE_Z13
+       bool "IBM z13"
+
 endchoice
 
 config 64BIT
 endchoice
 
 config 64BIT
index 878e67973151b54c93c5eb078d53a4beef330f10..e742ec5de9a7e5217756151e6898e68179823edc 100644 (file)
@@ -42,6 +42,7 @@ 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_Z10)    := -march=z10
 mflags-$(CONFIG_MARCH_Z196)   := -march=z196
 mflags-$(CONFIG_MARCH_ZEC12)  := -march=zEC12
+mflags-$(CONFIG_MARCH_Z13)   := -march=z13
 
 aflags-y += $(mflags-y)
 cflags-y += $(mflags-y)
 
 aflags-y += $(mflags-y)
 cflags-y += $(mflags-y)
@@ -53,6 +54,7 @@ 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_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
 
 #KBUILD_IMAGE is necessary for make rpm
 KBUILD_IMAGE   :=arch/s390/boot/image
 
 #KBUILD_IMAGE is necessary for make rpm
 KBUILD_IMAGE   :=arch/s390/boot/image
index d62eee11f0b54240339d898fbf95d4299c011545..132f4c9ade603002138b3075a8a7c16576b17fa2 100644 (file)
@@ -436,7 +436,9 @@ ENTRY(startup_kdump)
 # followed by the facility words.
 
 #if defined(CONFIG_64BIT)
 # followed by the facility words.
 
 #if defined(CONFIG_64BIT)
-#if defined(CONFIG_MARCH_ZEC12)
+#if defined(CONFIG_MARCH_Z13)
+       .long 3, 0xc100eff2, 0xf46ce800, 0x00400000
+#elif defined(CONFIG_MARCH_ZEC12)
        .long 3, 0xc100eff2, 0xf46ce800, 0x00400000
 #elif defined(CONFIG_MARCH_Z196)
        .long 2, 0xc100eff2, 0xf46c0000
        .long 3, 0xc100eff2, 0xf46ce800, 0x00400000
 #elif defined(CONFIG_MARCH_Z196)
        .long 2, 0xc100eff2, 0xf46c0000
index 4e532c67832fddc904aa050f66370cec25c97a26..bfac77ada4f28137b5545d9268d37346eb3af0ff 100644 (file)
@@ -810,6 +810,9 @@ static void __init setup_hwcaps(void)
        case 0x2828:
                strcpy(elf_platform, "zEC12");
                break;
        case 0x2828:
                strcpy(elf_platform, "zEC12");
                break;
+       case 0x2964:
+               strcpy(elf_platform, "z13");
+               break;
        }
 }
 
        }
 }