aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/crypto/curve25519.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2017-11-13 20:22:24 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2017-11-14 10:24:20 +0100
commitd911cd944dbf3f682efdee7837aec2027c63f612 (patch)
treee3b793c83117872c1b5405b97382dc89b992f910 /src/crypto/curve25519.c
parentcompat: 3.16.50 got proper rt6_get_cookie (diff)
downloadwireguard-monolithic-historical-d911cd944dbf3f682efdee7837aec2027c63f612.tar.xz
wireguard-monolithic-historical-d911cd944dbf3f682efdee7837aec2027c63f612.zip
curve25519-neon: compile in thumb mode
In thumb mode, it's not possible to use sp as an operand of and, so we have to muck around with r3 as a scratch register.
Diffstat (limited to '')
-rw-r--r--src/crypto/curve25519.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/crypto/curve25519.c b/src/crypto/curve25519.c
index 232c6d4..ddabfdf 100644
--- a/src/crypto/curve25519.c
+++ b/src/crypto/curve25519.c
@@ -192,7 +192,7 @@ static void curve25519_sandy2x_base(u8 pub[CURVE25519_POINT_SIZE], const u8 secr
memzero_explicit(x_51, sizeof(x_51));
memzero_explicit(z_51, sizeof(z_51));
}
-#elif IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && defined(CONFIG_ARM) && !defined(CONFIG_CPU_THUMBONLY)
+#elif IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && defined(CONFIG_ARM)
#include <asm/hwcap.h>
#include <asm/neon.h>
#include <asm/simd.h>
@@ -1470,7 +1470,7 @@ static void cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q)
bool curve25519(u8 mypublic[CURVE25519_POINT_SIZE], const u8 secret[CURVE25519_POINT_SIZE], const u8 basepoint[CURVE25519_POINT_SIZE])
{
-#if IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && defined(CONFIG_ARM) && !defined(CONFIG_CPU_THUMBONLY)
+#if IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && defined(CONFIG_ARM)
if (curve25519_use_neon && may_use_simd()) {
kernel_neon_begin();
curve25519_asm_neon(mypublic, secret, basepoint);
@@ -1649,7 +1649,7 @@ static void cmult(struct other_stack *s, limb *resultx, limb *resultz, const u8
bool curve25519(u8 mypublic[CURVE25519_POINT_SIZE], const u8 secret[CURVE25519_POINT_SIZE], const u8 basepoint[CURVE25519_POINT_SIZE])
{
-#if IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && defined(CONFIG_ARM) && !defined(CONFIG_CPU_THUMBONLY)
+#if IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && defined(CONFIG_ARM)
if (curve25519_use_neon && may_use_simd()) {
kernel_neon_begin();
curve25519_asm_neon(mypublic, secret, basepoint);