Commit 5230429a authored by Al Viro's avatar Al Viro

sparc64: take fprs_write() and friends to start_thread()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 1918c7f5
...@@ -94,6 +94,7 @@ struct thread_struct { ...@@ -94,6 +94,7 @@ struct thread_struct {
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <linux/types.h> #include <linux/types.h>
#include <asm/fpumacro.h>
/* Return saved PC of a blocked thread. */ /* Return saved PC of a blocked thread. */
struct task_struct; struct task_struct;
...@@ -143,6 +144,10 @@ do { \ ...@@ -143,6 +144,10 @@ do { \
: \ : \
: "r" (regs), "r" (sp - sizeof(struct reg_window) - STACK_BIAS), \ : "r" (regs), "r" (sp - sizeof(struct reg_window) - STACK_BIAS), \
"i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0]))); \ "i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0]))); \
fprs_write(0); \
current_thread_info()->xfsr[0] = 0; \
current_thread_info()->fpsaved[0] = 0; \
regs->tstate &= ~TSTATE_PEF; \
} while (0) } while (0)
#define start_thread32(regs, pc, sp) \ #define start_thread32(regs, pc, sp) \
...@@ -183,6 +188,10 @@ do { \ ...@@ -183,6 +188,10 @@ do { \
: \ : \
: "r" (regs), "r" (sp - sizeof(struct reg_window32)), \ : "r" (regs), "r" (sp - sizeof(struct reg_window32)), \
"i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0]))); \ "i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0]))); \
fprs_write(0); \
current_thread_info()->xfsr[0] = 0; \
current_thread_info()->fpsaved[0] = 0; \
regs->tstate &= ~TSTATE_PEF; \
} while (0) } while (0)
/* Free all resources held by a thread. */ /* Free all resources held by a thread. */
......
...@@ -692,12 +692,6 @@ asmlinkage int sparc_execve(struct pt_regs *regs) ...@@ -692,12 +692,6 @@ asmlinkage int sparc_execve(struct pt_regs *regs)
(const char __user *const __user *) (const char __user *const __user *)
regs->u_regs[base + UREG_I2], regs); regs->u_regs[base + UREG_I2], regs);
putname(filename); putname(filename);
if (!error) {
fprs_write(0);
current_thread_info()->xfsr[0] = 0;
current_thread_info()->fpsaved[0] = 0;
regs->tstate &= ~TSTATE_PEF;
}
out: out:
return error; return error;
} }
......
...@@ -421,13 +421,6 @@ asmlinkage long sparc32_execve(struct pt_regs *regs) ...@@ -421,13 +421,6 @@ asmlinkage long sparc32_execve(struct pt_regs *regs)
compat_ptr(regs->u_regs[base + UREG_I2]), regs); compat_ptr(regs->u_regs[base + UREG_I2]), regs);
putname(filename); putname(filename);
if (!error) {
fprs_write(0);
current_thread_info()->xfsr[0] = 0;
current_thread_info()->fpsaved[0] = 0;
regs->tstate &= ~TSTATE_PEF;
}
out: out:
return error; return error;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment