Remove the CRYPTO_is_*_capable_at_runtime indirection
I think this dates to when CRYPTO_is_*_capable were inline functions in
public headers, so they couldn't access OPENSSL_armcap_P directly. Now
they can.
Change-Id: Ic06fffa7f5056401118b62d690dfe6b21bc30f86
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62345
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index 07d0ee3..68fb65b 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -134,7 +134,6 @@
cpu_aarch64_win.c
cpu_arm_freebsd.c
cpu_arm_linux.c
- cpu_arm.c
cpu_intel.c
crypto.c
curve25519/curve25519.c
diff --git a/crypto/cpu_arm.c b/crypto/cpu_arm.c
deleted file mode 100644
index 00cf921..0000000
--- a/crypto/cpu_arm.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2014, Google Inc.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
-
-#include "internal.h"
-
-#if (defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) && \
- !defined(OPENSSL_STATIC_ARMCAP)
-
-#include <openssl/arm_arch.h>
-
-
-int CRYPTO_is_NEON_capable_at_runtime(void) {
- return (OPENSSL_armcap_P & ARMV7_NEON) != 0;
-}
-
-int CRYPTO_is_ARMv8_AES_capable_at_runtime(void) {
- return (OPENSSL_armcap_P & ARMV8_AES) != 0;
-}
-
-int CRYPTO_is_ARMv8_PMULL_capable_at_runtime(void) {
- return (OPENSSL_armcap_P & ARMV8_PMULL) != 0;
-}
-
-#endif /* (defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) &&
- !defined(OPENSSL_STATIC_ARMCAP) */
diff --git a/crypto/internal.h b/crypto/internal.h
index 6f5a9e0..a4d3fe9 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -109,6 +109,7 @@
#ifndef OPENSSL_HEADER_CRYPTO_INTERNAL_H
#define OPENSSL_HEADER_CRYPTO_INTERNAL_H
+#include <openssl/arm_arch.h>
#include <openssl/crypto.h>
#include <openssl/ex_data.h>
#include <openssl/stack.h>
@@ -1379,21 +1380,6 @@
#endif
#endif
-#if !defined(OPENSSL_STATIC_ARMCAP)
-// CRYPTO_is_NEON_capable_at_runtime returns true if the current CPU has a NEON
-// unit. Note that |OPENSSL_armcap_P| also exists and contains the same
-// information in a form that's easier for assembly to use.
-OPENSSL_EXPORT int CRYPTO_is_NEON_capable_at_runtime(void);
-
-// CRYPTO_is_ARMv8_AES_capable_at_runtime returns true if the current CPU
-// supports the ARMv8 AES instruction.
-int CRYPTO_is_ARMv8_AES_capable_at_runtime(void);
-
-// CRYPTO_is_ARMv8_PMULL_capable_at_runtime returns true if the current CPU
-// supports the ARMv8 PMULL instruction.
-int CRYPTO_is_ARMv8_PMULL_capable_at_runtime(void);
-#endif // !OPENSSL_STATIC_ARMCAP
-
// CRYPTO_is_NEON_capable returns true if the current CPU has a NEON unit. If
// this is known statically, it is a constant inline function.
OPENSSL_INLINE int CRYPTO_is_NEON_capable(void) {
@@ -1402,7 +1388,7 @@
#elif defined(OPENSSL_STATIC_ARMCAP)
return 0;
#else
- return CRYPTO_is_NEON_capable_at_runtime();
+ return (OPENSSL_armcap_P & ARMV7_NEON) != 0;
#endif
}
@@ -1412,7 +1398,7 @@
#elif defined(OPENSSL_STATIC_ARMCAP)
return 0;
#else
- return CRYPTO_is_ARMv8_AES_capable_at_runtime();
+ return (OPENSSL_armcap_P & ARMV8_AES) != 0;
#endif
}
@@ -1422,7 +1408,7 @@
#elif defined(OPENSSL_STATIC_ARMCAP)
return 0;
#else
- return CRYPTO_is_ARMv8_PMULL_capable_at_runtime();
+ return (OPENSSL_armcap_P & ARMV8_PMULL) != 0;
#endif
}