diff options
Diffstat (limited to 'arch/arm/include/asm/simd.h')
| -rw-r--r-- | arch/arm/include/asm/simd.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/arch/arm/include/asm/simd.h b/arch/arm/include/asm/simd.h index 82191dbd7e78..8549fa8b7253 100644 --- a/arch/arm/include/asm/simd.h +++ b/arch/arm/include/asm/simd.h @@ -1,8 +1,22 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_SIMD_H +#define _ASM_SIMD_H -#include <linux/hardirq.h> +#include <linux/cleanup.h> +#include <linux/compiler_attributes.h> +#include <linux/preempt.h> +#include <linux/types.h> + +#include <asm/neon.h> static __must_check inline bool may_use_simd(void) { - return IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && !in_hardirq(); + return IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && !in_hardirq() + && !irqs_disabled(); } + +DEFINE_LOCK_GUARD_0(ksimd, kernel_neon_begin(), kernel_neon_end()) + +#define scoped_ksimd() scoped_guard(ksimd) + +#endif /* _ASM_SIMD_H */ |
