Print CPUINFO also for riscv processors

Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24172)
This commit is contained in:
Hongren Zheng 2024-04-18 11:59:03 +08:00 committed by Tomas Mraz
parent 66ad636b97
commit c1bf576037
1 changed files with 30 additions and 0 deletions

View File

@ -21,6 +21,9 @@
#elif defined(__s390__) || defined(__s390x__) #elif defined(__s390__) || defined(__s390x__)
# include "s390x_arch.h" # include "s390x_arch.h"
# define CPU_INFO_STR_LEN 2048 # define CPU_INFO_STR_LEN 2048
#elif defined(__riscv)
# include "crypto/riscv_arch.h"
# define CPU_INFO_STR_LEN 2048
#else #else
# define CPU_INFO_STR_LEN 128 # define CPU_INFO_STR_LEN 128
#endif #endif
@ -98,6 +101,33 @@ DEFINE_RUN_ONCE_STATIC(init_info_strings)
BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str), BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str),
sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str), sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str),
" env:%s", env); " env:%s", env);
# elif defined(__riscv)
const char *env;
char sep = '=';
BIO_snprintf(ossl_cpu_info_str, sizeof(ossl_cpu_info_str),
CPUINFO_PREFIX "OPENSSL_riscvcap");
for (size_t i = 0; i < kRISCVNumCaps; ++i) {
if (OPENSSL_riscvcap_P[RISCV_capabilities[i].index]
& (1 << RISCV_capabilities[i].bit_offset)) {
/* Match, display the name */
BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str),
sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str),
"%c%s", sep, RISCV_capabilities[i].name);
/* Only the first sep is '=' */
sep = '_';
}
}
/* If no capability is found, add back the = */
if (sep == '=') {
BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str),
sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str),
"%c", sep);
}
if ((env = getenv("OPENSSL_riscvcap")) != 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
#endif #endif