|
@@ -77,15 +77,6 @@ static inline void sanitize_i387_state(struct task_struct *tsk)
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_X86_64
|
|
|
-
|
|
|
-/* Ignore delayed exceptions from user space */
|
|
|
-static inline void tolerant_fwait(void)
|
|
|
-{
|
|
|
- asm volatile("1: fwait\n"
|
|
|
- "2:\n"
|
|
|
- _ASM_EXTABLE(1b, 2b));
|
|
|
-}
|
|
|
-
|
|
|
static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
|
|
|
{
|
|
|
int err;
|
|
@@ -220,11 +211,6 @@ extern void finit_soft_fpu(struct i387_soft_struct *soft);
|
|
|
static inline void finit_soft_fpu(struct i387_soft_struct *soft) {}
|
|
|
#endif
|
|
|
|
|
|
-static inline void tolerant_fwait(void)
|
|
|
-{
|
|
|
- asm volatile("fnclex ; fwait");
|
|
|
-}
|
|
|
-
|
|
|
/* perform fxrstor iff the processor has extended states, otherwise frstor */
|
|
|
static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
|
|
|
{
|
|
@@ -344,7 +330,10 @@ static inline void __unlazy_fpu(struct task_struct *tsk)
|
|
|
static inline void __clear_fpu(struct task_struct *tsk)
|
|
|
{
|
|
|
if (task_thread_info(tsk)->status & TS_USEDFPU) {
|
|
|
- tolerant_fwait();
|
|
|
+ /* Ignore delayed exceptions from user space */
|
|
|
+ asm volatile("1: fwait\n"
|
|
|
+ "2:\n"
|
|
|
+ _ASM_EXTABLE(1b, 2b));
|
|
|
task_thread_info(tsk)->status &= ~TS_USEDFPU;
|
|
|
stts();
|
|
|
}
|