summaryrefslogtreecommitdiffstats
path: root/crypto/info.c
diff options
context:
space:
mode:
authorPatrick Steuer <patrick.steuer@de.ibm.com>2020-06-20 17:59:02 +0200
committerPatrick Steuer <patrick.steuer@de.ibm.com>2020-06-22 02:35:01 +0200
commitb55a0b0ff209f7004c16e1bf69dd557167878fd6 (patch)
treeb80b5ea79bad36fb4a9a089ffcdf5ae180677eaa /crypto/info.c
parent13da2e61bf16f932a8d80bc934605d61556f3e0e (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/info.c')
-rw-r--r--crypto/info.c44
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