summaryrefslogtreecommitdiffstatshomepage
path: root/src/crypto/include
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-09-06 20:55:59 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2018-09-06 21:07:22 -0600
commit2b1d77adecd8a93f4cf3582abd324cf40b4280a1 (patch)
tree1ee8ba794123cdc0329d98688b5e1b4955d959ca /src/crypto/include
parentcompat: arch-namespace certain includes (diff)
downloadwireguard-linux-compat-2b1d77adecd8a93f4cf3582abd324cf40b4280a1.tar.xz
wireguard-linux-compat-2b1d77adecd8a93f4cf3582abd324cf40b4280a1.zip
compat: move simd.h from crypto to compat since it's going upstream
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/crypto/include')
-rw-r--r--src/crypto/include/linux/simd.h65
1 files changed, 0 insertions, 65 deletions
diff --git a/src/crypto/include/linux/simd.h b/src/crypto/include/linux/simd.h
deleted file mode 100644
index 6adf0c3..0000000
--- a/src/crypto/include/linux/simd.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0
- *
- * Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
- */
-
-#ifndef _WG_SIMD_H
-#define _WG_SIMD_H
-
-#include <linux/sched.h>
-#if defined(CONFIG_X86_64)
-#include <linux/version.h>
-#include <asm/fpu/api.h>
-#include <asm/simd.h>
-#elif IS_ENABLED(CONFIG_KERNEL_MODE_NEON)
-#include <asm/neon.h>
-#include <asm/simd.h>
-#endif
-
-typedef enum {
- HAVE_NO_SIMD,
- HAVE_FULL_SIMD
-} simd_context_t;
-
-static inline simd_context_t simd_get(void)
-{
- bool have_simd = false;
-#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) && !defined(CONFIG_PREEMPT_RT_BASE)
- have_simd = irq_fpu_usable();
- if (have_simd)
- kernel_fpu_begin();
-#elif IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && !defined(CONFIG_PREEMPT_RT_BASE)
-#if defined(CONFIG_ARM64)
- have_simd = true; /* ARM64 supports NEON in any context. */
-#elif defined(CONFIG_ARM)
- have_simd = may_use_simd(); /* ARM doesn't support NEON in interrupt context. */
-#endif
- if (have_simd)
- kernel_neon_begin();
-#endif
- return have_simd ? HAVE_FULL_SIMD : HAVE_NO_SIMD;
-}
-
-static inline void simd_put(simd_context_t prior_context)
-{
-#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) && !defined(CONFIG_PREEMPT_RT_BASE)
- if (prior_context != HAVE_NO_SIMD)
- kernel_fpu_end();
-#elif IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && !defined(CONFIG_PREEMPT_RT_BASE)
- if (prior_context != HAVE_NO_SIMD)
- kernel_neon_end();
-#endif
-}
-
-static inline simd_context_t simd_relax(simd_context_t prior_context)
-{
-#ifdef CONFIG_PREEMPT
- if (prior_context != HAVE_NO_SIMD && need_resched()) {
- simd_put(prior_context);
- return simd_get();
- }
-#endif
- return prior_context;
-}
-
-#endif /* _WG_SIMD_H */