diff options
author | Patrick Steuer <patrick.steuer@de.ibm.com> | 2020-06-20 17:59:02 +0200 |
---|---|---|
committer | Patrick Steuer <patrick.steuer@de.ibm.com> | 2020-06-22 02:35:01 +0200 |
commit | b55a0b0ff209f7004c16e1bf69dd557167878fd6 (patch) | |
tree | b80b5ea79bad36fb4a9a089ffcdf5ae180677eaa /crypto | |
parent | 13da2e61bf16f932a8d80bc934605d61556f3e0e (diff) |
Print CPUINFO also for s390 processors
Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12216)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/info.c | 44 |
1 files changed, 43 insertions, 1 deletions
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 |