From: Patrick Steuer Date: Sat, 20 Jun 2020 15:59:02 +0000 (+0200) Subject: Print CPUINFO also for s390 processors X-Git-Tag: openssl-3.0.0-alpha4~58 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=b55a0b0ff209f7004c16e1bf69dd557167878fd6 Print CPUINFO also for s390 processors Signed-off-by: Patrick Steuer Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/12216) --- diff --git a/crypto/info.c b/crypto/info.c index 968184fceb..a106e8c885 100644 --- a/crypto/info.c +++ b/crypto/info.c @@ -17,6 +17,12 @@ #if defined(__arm__) || defined(__arm) || defined(__aarch64__) # include "arm_arch.h" +# define CPU_INFO_STR_LEN 128 +#elif defined(__s390__) || defined(__s390x__) +# include "s390x_arch.h" +# define CPU_INFO_STR_LEN 2048 +#else +# define CPU_INFO_STR_LEN 128 #endif /* extern declaration to avoid warning */ @@ -24,7 +30,7 @@ extern char ossl_cpu_info_str[]; static char *seed_sources = NULL; -char ossl_cpu_info_str[128] = ""; +char ossl_cpu_info_str[CPU_INFO_STR_LEN] = ""; #define CPUINFO_PREFIX "CPUINFO: " static CRYPTO_ONCE init_info = CRYPTO_ONCE_STATIC_INIT; @@ -56,6 +62,42 @@ DEFINE_RUN_ONCE_STATIC(init_info_strings) BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str), sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str), " env:%s", env); +# elif defined(__s390__) || defined(__s390x__) + const char *env; + + BIO_snprintf(ossl_cpu_info_str, sizeof(ossl_cpu_info_str), + CPUINFO_PREFIX "OPENSSL_s390xcap=" + "stfle:0x%llx:0x%llx:0x%llx:0x%llx:" + "kimd:0x%llx:0x%llx:" + "klmd:0x%llx:0x%llx:" + "km:0x%llx:0x%llx:" + "kmc:0x%llx:0x%llx:" + "kmac:0x%llx:0x%llx:" + "kmctr:0x%llx:0x%llx:" + "kmo:0x%llx:0x%llx:" + "kmf:0x%llx:0x%llx:" + "prno:0x%llx:0x%llx:" + "kma:0x%llx:0x%llx:" + "pcc:0x%llx:0x%llx:" + "kdsa:0x%llx:0x%llx", + OPENSSL_s390xcap_P.stfle[0], OPENSSL_s390xcap_P.stfle[1], + OPENSSL_s390xcap_P.stfle[2], OPENSSL_s390xcap_P.stfle[3], + OPENSSL_s390xcap_P.kimd[0], OPENSSL_s390xcap_P.kimd[1], + OPENSSL_s390xcap_P.klmd[0], OPENSSL_s390xcap_P.klmd[1], + OPENSSL_s390xcap_P.km[0], OPENSSL_s390xcap_P.km[1], + OPENSSL_s390xcap_P.kmc[0], OPENSSL_s390xcap_P.kmc[1], + OPENSSL_s390xcap_P.kmac[0], OPENSSL_s390xcap_P.kmac[1], + OPENSSL_s390xcap_P.kmctr[0], OPENSSL_s390xcap_P.kmctr[1], + OPENSSL_s390xcap_P.kmo[0], OPENSSL_s390xcap_P.kmo[1], + OPENSSL_s390xcap_P.kmf[0], OPENSSL_s390xcap_P.kmf[1], + OPENSSL_s390xcap_P.prno[0], OPENSSL_s390xcap_P.prno[1], + OPENSSL_s390xcap_P.kma[0], OPENSSL_s390xcap_P.kma[1], + OPENSSL_s390xcap_P.pcc[0], OPENSSL_s390xcap_P.pcc[1], + OPENSSL_s390xcap_P.kdsa[0], OPENSSL_s390xcap_P.kdsa[1]); + if ((env = getenv("OPENSSL_s390xcap")) != NULL) + BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str), + sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str), + " env:%s", env); # endif #endif