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
          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
 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
 config TUNE_Z13
        bool "IBM z13"
 
+config TUNE_Z14
+       bool "IBM z14"
+
 endchoice
 
 config 64BIT
 
 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)
 
 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
 
 
        case 0x2965:
                strcpy(elf_platform, "z13");
                break;
+       case 0x3906:
+               strcpy(elf_platform, "z14");
+               break;
        }
 
        /*
 
 #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 */
                }