diff options
Diffstat (limited to 'arch/x86/include/asm/fpu/api.h')
| -rw-r--r-- | arch/x86/include/asm/fpu/api.h | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h index a5aba4ab0224..67a4f1cb2aac 100644 --- a/arch/x86/include/asm/fpu/api.h +++ b/arch/x86/include/asm/fpu/api.h @@ -16,14 +16,25 @@   * Use kernel_fpu_begin/end() if you intend to use FPU in kernel context. It   * disables preemption so be careful if you intend to use it for long periods   * of time. - * If you intend to use the FPU in softirq you need to check first with + * If you intend to use the FPU in irq/softirq you need to check first with   * irq_fpu_usable() if it is possible.   */ -extern void kernel_fpu_begin(void); + +/* Kernel FPU states to initialize in kernel_fpu_begin_mask() */ +#define KFPU_387	_BITUL(0)	/* 387 state will be initialized */ +#define KFPU_MXCSR	_BITUL(1)	/* MXCSR will be initialized */ + +extern void kernel_fpu_begin_mask(unsigned int kfpu_mask);  extern void kernel_fpu_end(void);  extern bool irq_fpu_usable(void);  extern void fpregs_mark_activate(void); +/* Code that is unaware of kernel_fpu_begin_mask() can use this */ +static inline void kernel_fpu_begin(void) +{ +	kernel_fpu_begin_mask(KFPU_387 | KFPU_MXCSR); +} +  /*   * Use fpregs_lock() while editing CPU's FPU registers or fpu->state.   * A context switch will (and softirq might) save CPU's FPU registers to  | 
