blob: 65e1500ae5eddec7c6fc08ac1051e28dc825c487 [file] [log] [blame]
Andrew Geissler748a4832020-07-24 16:24:21 -05001From 8b67c22b057e158f61c9fdd5b01f37195c6f5ca4 Mon Sep 17 00:00:00 2001
Andrew Geissler82c905d2020-04-13 13:39:40 -05002From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 18 Dec 2019 12:29:50 +0100
4Subject: [PATCH] freebl: add a configure option to disable ARM HW crypto
5
6Not all current hardware supports it, particularly anything
7prior to armv8 does not.
8
9Upstream-Status: Pending
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Andrew Geissler82c905d2020-04-13 13:39:40 -050011
Andrew Geissler748a4832020-07-24 16:24:21 -050012---
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050013 nss/lib/freebl/Makefile | 3 +++
Andrew Geissler748a4832020-07-24 16:24:21 -050014 nss/lib/freebl/gcm.c | 2 ++
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050015 2 files changed, 5 insertions(+)
Andrew Geissler748a4832020-07-24 16:24:21 -050016
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050017diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile
18index fe8c526..922f67c 100644
Andrew Geissler82c905d2020-04-13 13:39:40 -050019--- a/nss/lib/freebl/Makefile
20+++ b/nss/lib/freebl/Makefile
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050021@@ -125,6 +125,8 @@ else
22 DEFINES += -DNSS_X86
Andrew Geissler82c905d2020-04-13 13:39:40 -050023 endif
24 endif
Andrew Geissler82c905d2020-04-13 13:39:40 -050025+ifdef NSS_USE_ARM_HW_CRYPTO
26+ DEFINES += -DNSS_USE_ARM_HW_CRYPTO
27 ifeq ($(CPU_ARCH),aarch64)
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050028 ifdef CC_IS_CLANG
29 DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2
30@@ -166,6 +168,7 @@ endif
Andrew Geissler82c905d2020-04-13 13:39:40 -050031 endif
32 endif
33 endif
34+endif
35
36 ifeq ($(OS_TARGET),OSF1)
37 DEFINES += -DMP_ASSEMBLY_MULTIPLY -DMP_NO_MP_WORD
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050038diff --git a/nss/lib/freebl/gcm.c b/nss/lib/freebl/gcm.c
39index c2cc18d..b77f573 100644
Andrew Geissler82c905d2020-04-13 13:39:40 -050040--- a/nss/lib/freebl/gcm.c
41+++ b/nss/lib/freebl/gcm.c
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050042@@ -18,6 +18,7 @@
43
44 #include <limits.h>
45
46+#ifdef NSS_USE_ARM_HW_CRYPTO
Andrew Geissler82c905d2020-04-13 13:39:40 -050047 /* old gcc doesn't support some poly64x2_t intrinsic */
48 #if defined(__aarch64__) && defined(IS_LITTLE_ENDIAN) && \
49 (defined(__clang__) || defined(__GNUC__) && __GNUC__ > 6)
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050050@@ -27,6 +28,7 @@
Andrew Geisslerd688a012020-09-18 13:36:00 -050051 /* We don't test on big endian platform, so disable this on big endian. */
Andrew Geisslerbbbd5f42020-10-30 15:42:48 -050052 #define USE_ARM_GCM
53 #endif
54+#endif
55
56 /* Forward declarations */
57 SECStatus gcm_HashInit_hw(gcmHashContext *ghash);