s390: add support for IBM z15 machines

Add detection for machine types 0x8562 and 8x8561 and set the ELF platform
name to z15. Add the miscellaneous-instruction-extension 3 facility to
the list of facilities for z15.

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

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
Martin Schwidefsky 2019-02-06 08:22:11 +01:00 committed by Heiko Carstens
parent 3c2eb6b76c
commit a0e2251132
4 changed files with 27 additions and 0 deletions

View File

@ -237,6 +237,10 @@ config HAVE_MARCH_Z14_FEATURES
def_bool n def_bool n
select HAVE_MARCH_Z13_FEATURES select HAVE_MARCH_Z13_FEATURES
config HAVE_MARCH_Z15_FEATURES
def_bool n
select HAVE_MARCH_Z14_FEATURES
choice choice
prompt "Processor type" prompt "Processor type"
default MARCH_Z196 default MARCH_Z196
@ -308,6 +312,14 @@ config MARCH_Z14
and 3906 series). The kernel will be slightly faster but will not and 3906 series). The kernel will be slightly faster but will not
work on older machines. work on older machines.
config MARCH_Z15
bool "IBM z15"
select HAVE_MARCH_Z15_FEATURES
help
Select this to enable optimizations for IBM z15 (8562
and 8561 series). The kernel will be slightly faster but will not
work on older machines.
endchoice endchoice
config MARCH_Z900_TUNE config MARCH_Z900_TUNE
@ -334,6 +346,9 @@ config MARCH_Z13_TUNE
config MARCH_Z14_TUNE config MARCH_Z14_TUNE
def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT def_bool TUNE_Z14 || MARCH_Z14 && TUNE_DEFAULT
config MARCH_Z15_TUNE
def_bool TUNE_Z15 || MARCH_Z15 && TUNE_DEFAULT
choice choice
prompt "Tune code generation" prompt "Tune code generation"
default TUNE_DEFAULT default TUNE_DEFAULT
@ -378,6 +393,9 @@ config TUNE_Z13
config TUNE_Z14 config TUNE_Z14
bool "IBM z14" bool "IBM z14"
config TUNE_Z15
bool "IBM z15"
endchoice endchoice
config 64BIT config 64BIT

View File

@ -45,6 +45,7 @@ mflags-$(CONFIG_MARCH_Z196) := -march=z196
mflags-$(CONFIG_MARCH_ZEC12) := -march=zEC12 mflags-$(CONFIG_MARCH_ZEC12) := -march=zEC12
mflags-$(CONFIG_MARCH_Z13) := -march=z13 mflags-$(CONFIG_MARCH_Z13) := -march=z13
mflags-$(CONFIG_MARCH_Z14) := -march=z14 mflags-$(CONFIG_MARCH_Z14) := -march=z14
mflags-$(CONFIG_MARCH_Z15) := -march=z15
export CC_FLAGS_MARCH := $(mflags-y) export CC_FLAGS_MARCH := $(mflags-y)
@ -59,6 +60,7 @@ cflags-$(CONFIG_MARCH_Z196_TUNE) += -mtune=z196
cflags-$(CONFIG_MARCH_ZEC12_TUNE) += -mtune=zEC12 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-$(CONFIG_MARCH_Z14_TUNE) += -mtune=z14
cflags-$(CONFIG_MARCH_Z15_TUNE) += -mtune=z15
cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include

View File

@ -981,6 +981,10 @@ static int __init setup_hwcaps(void)
case 0x3907: case 0x3907:
strcpy(elf_platform, "z14"); strcpy(elf_platform, "z14");
break; break;
case 0x8561:
case 0x8562:
strcpy(elf_platform, "z15");
break;
} }
/* /*

View File

@ -57,6 +57,9 @@ static struct facility_def facility_defs[] = {
#endif #endif
#ifdef CONFIG_HAVE_MARCH_Z14_FEATURES #ifdef CONFIG_HAVE_MARCH_Z14_FEATURES
58, /* miscellaneous-instruction-extension 2 */ 58, /* miscellaneous-instruction-extension 2 */
#endif
#ifdef CONFIG_HAVE_MARCH_Z15_FEATURES
61, /* miscellaneous-instruction-extension 3 */
#endif #endif
-1 /* END */ -1 /* END */
} }