diff options
author | David Carlier <devnexen@gmail.com> | 2020-12-09 20:23:32 +0000 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2021-01-14 08:34:38 +0000 |
commit | 5eb24fbd1c3e0d130ba7f81f1ccf457a2b9d75ad (patch) | |
tree | becae3d53cae829628119c5d0d74043598190f45 /crypto/armcap.c | |
parent | b57ec7394aace731c460b509aa84039274337600 (diff) |
OPENSSL_cpuid_setup FreeBSD arm update.
when possible using the getauxval equivalent which has similar ids as Linux, instead of bad instructions catch approach.
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13650)
Diffstat (limited to 'crypto/armcap.c')
-rw-r--r-- | crypto/armcap.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/crypto/armcap.c b/crypto/armcap.c index 7bd82f8ebc..6c0acda244 100644 --- a/crypto/armcap.c +++ b/crypto/armcap.c @@ -71,6 +71,23 @@ void OPENSSL_cpuid_setup(void) __attribute__ ((constructor)); # define OSSL_IMPLEMENT_GETAUXVAL # endif # endif +# if defined(__FreeBSD__) +# include <sys/param.h> +# if __FreeBSD_version >= 1200000 +# include <sys/auxv.h> +# define OSSL_IMPLEMENT_GETAUXVAL + +static unsigned long getauxval(unsigned long key) +{ + unsigned long val = 0ul; + + if (elf_aux_info((int)key, &val, sizeof(val)) != 0) + return 0ul; + + return val; +} +# endif +# endif /* * ARM puts the feature bits for Crypto Extensions in AT_HWCAP2, whereas |