1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * Copyright (C) 1994 Linus Torvalds |
4 | * |
5 | * Pentium III FXSR, SSE support |
6 | * General FPU state handling cleanups |
7 | * Gareth Hughes <gareth@valinux.com>, May 2000 |
8 | * x86-64 work by Andi Kleen 2002 |
9 | */ |
10 | |
11 | #ifndef _ASM_X86_FPU_API_H |
12 | #define _ASM_X86_FPU_API_H |
13 | |
14 | /* |
15 | * Use kernel_fpu_begin/end() if you intend to use FPU in kernel context. It |
16 | * disables preemption so be careful if you intend to use it for long periods |
17 | * of time. |
18 | * If you intend to use the FPU in softirq you need to check first with |
19 | * irq_fpu_usable() if it is possible. |
20 | */ |
21 | extern void kernel_fpu_begin(void); |
22 | extern void kernel_fpu_end(void); |
23 | extern bool irq_fpu_usable(void); |
24 | |
25 | /* |
26 | * Query the presence of one or more xfeatures. Works on any legacy CPU as well. |
27 | * |
28 | * If 'feature_name' is set then put a human-readable description of |
29 | * the feature there as well - this can be used to print error (or success) |
30 | * messages. |
31 | */ |
32 | extern int cpu_has_xfeatures(u64 xfeatures_mask, const char **feature_name); |
33 | |
34 | #endif /* _ASM_X86_FPU_API_H */ |
35 | |