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 Gleixnerstatic __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 Gleixnerstatic __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