patch-2.4.21 linux-2.4.21/arch/x86_64/kernel/i387.c
Next file: linux-2.4.21/arch/x86_64/kernel/i8259.c
Previous file: linux-2.4.21/arch/x86_64/kernel/head64.c
Back to the patch index
Back to the overall index
- Lines: 38
- Date:
2003-06-13 07:51:32.000000000 -0700
- Orig file:
linux-2.4.20/arch/x86_64/kernel/i387.c
- Orig date:
2002-11-28 15:53:12.000000000 -0800
diff -urN linux-2.4.20/arch/x86_64/kernel/i387.c linux-2.4.21/arch/x86_64/kernel/i387.c
@@ -25,19 +25,16 @@
extern int exception_trace;
-/*
- * The _current_ task is using the FPU for the first time
- * so initialize it and set the mxcsr to its default
- * value at reset if we support XMM instructions and then
- * remeber the current task has used the FPU.
- */
-void init_fpu(void)
+void init_fpu(struct task_struct *child)
{
- struct task_struct *me = current;
- memset(&me->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
- me->thread.i387.fxsave.cwd = 0x37f;
- me->thread.i387.fxsave.mxcsr = 0x1f80;
- me->used_math = 1;
+ if (child->used_math) {
+ unlazy_fpu(child);
+ return;
+ }
+ memset(&child->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
+ child->thread.i387.fxsave.cwd = 0x37f;
+ child->thread.i387.fxsave.mxcsr = 0x1f80;
+ child->used_math = 1;
}
/*
@@ -81,7 +78,7 @@
int get_fpregs(struct user_i387_struct *buf, struct task_struct *tsk)
{
- empty_fpu(tsk);
+ init_fpu(tsk);
return __copy_to_user((void *)buf, &tsk->thread.i387.fxsave,
sizeof(struct user_i387_struct)) ? -EFAULT : 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)