xref: /openbmc/linux/arch/x86/kernel/fpu/internal.h (revision 53599b4d)
196034455SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0 */
296034455SThomas Gleixner #ifndef __X86_KERNEL_FPU_INTERNAL_H
396034455SThomas Gleixner #define __X86_KERNEL_FPU_INTERNAL_H
496034455SThomas Gleixner 
5*f83ac56aSThomas Gleixner extern struct fpstate init_fpstate;
6079ec41bSThomas Gleixner 
7d06241f5SThomas Gleixner /* CPU feature check wrappers */
use_xsave(void)8d06241f5SThomas Gleixner static __always_inline __pure bool use_xsave(void)
9d06241f5SThomas Gleixner {
10d06241f5SThomas Gleixner 	return cpu_feature_enabled(X86_FEATURE_XSAVE);
11d06241f5SThomas Gleixner }
12d06241f5SThomas Gleixner 
use_fxsr(void)13d06241f5SThomas Gleixner static __always_inline __pure bool use_fxsr(void)
14d06241f5SThomas Gleixner {
15d06241f5SThomas Gleixner 	return cpu_feature_enabled(X86_FEATURE_FXSR);
16d06241f5SThomas Gleixner }
17d06241f5SThomas Gleixner 
18cdcb6fa1SThomas Gleixner #ifdef CONFIG_X86_DEBUG_FPU
19cdcb6fa1SThomas Gleixner # define WARN_ON_FPU(x) WARN_ON_ONCE(x)
20cdcb6fa1SThomas Gleixner #else
21cdcb6fa1SThomas Gleixner # define WARN_ON_FPU(x) ({ (void)(x); 0; })
22cdcb6fa1SThomas Gleixner #endif
23cdcb6fa1SThomas Gleixner 
2490489f1dSThomas Gleixner /* Used in init.c */
25*f83ac56aSThomas Gleixner extern void fpstate_init_user(struct fpstate *fpstate);
2687d0e5beSThomas Gleixner extern void fpstate_reset(struct fpu *fpu);
2790489f1dSThomas Gleixner 
2896034455SThomas Gleixner #endif
29