diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-11-13 20:22:24 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-11-14 10:24:20 +0100 |
commit | dbfc216dcfd725073f17cdc27523a1b30b48a1a4 (patch) | |
tree | 3b07c171eb96bd546878fe65d55878b41e77e91f /src/crypto/curve25519.c | |
parent | bbb1f11d947f3c24ac92cc0be15a719820d06e7f (diff) |
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.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/crypto/curve25519.c')
-rw-r--r-- | src/crypto/curve25519.c | 6 |
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); |