aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/crypto/zinc/curve25519/curve25519-arm-glue.h
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-10-03 03:20:00 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-10-03 03:20:00 +0200
commitdc0b1d47274c5410f14d3a77103997ff8b03b000 (patch)
tree3a13bf4d3f8a1234ad25ac17be8cf0cd605ceaa4 /src/crypto/zinc/curve25519/curve25519-arm-glue.h
parentchacha20-arm: use proper reteq macro instead of bxeq (diff)
downloadwireguard-monolithic-historical-dc0b1d47274c5410f14d3a77103997ff8b03b000.tar.xz
wireguard-monolithic-historical-dc0b1d47274c5410f14d3a77103997ff8b03b000.zip
curve25519-arm: use new simd api
Diffstat (limited to '')
-rw-r--r--src/crypto/zinc/curve25519/curve25519-arm-glue.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/crypto/zinc/curve25519/curve25519-arm-glue.h b/src/crypto/zinc/curve25519/curve25519-arm-glue.h
index 1e6769c..4f4c337 100644
--- a/src/crypto/zinc/curve25519/curve25519-arm-glue.h
+++ b/src/crypto/zinc/curve25519/curve25519-arm-glue.h
@@ -3,9 +3,9 @@
* Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
*/
+#include <linux/simd.h>
#include <asm/hwcap.h>
#include <asm/neon.h>
-#include <asm/simd.h>
asmlinkage void curve25519_neon(u8 mypublic[CURVE25519_KEY_SIZE],
const u8 secret[CURVE25519_KEY_SIZE],
@@ -22,15 +22,18 @@ static inline bool curve25519_arch(u8 mypublic[CURVE25519_KEY_SIZE],
const u8 secret[CURVE25519_KEY_SIZE],
const u8 basepoint[CURVE25519_KEY_SIZE])
{
+ simd_context_t simd_context;
+ bool used_arch = false;
+
+ simd_get(&simd_context);
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) &&
!IS_ENABLED(CONFIG_CPU_BIG_ENDIAN) && curve25519_use_neon &&
- may_use_simd()) {
- kernel_neon_begin();
+ simd_use(&simd_context)) {
curve25519_neon(mypublic, secret, basepoint);
- kernel_neon_end();
- return true;
+ used_arch = true;
}
- return false;
+ simd_put(&simd_context);
+ return used_arch;
}
static inline bool curve25519_base_arch(u8 pub[CURVE25519_KEY_SIZE],