aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc/kernel/process_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel/process_64.c')
-rw-r--r--arch/sparc/kernel/process_64.c94
1 files changed, 0 insertions, 94 deletions
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index 8c400fca4e9f..278bf287c4be 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -572,100 +572,6 @@ barf:
force_sig(SIGSEGV);
}
-asmlinkage long sparc_fork(struct pt_regs *regs)
-{
- unsigned long orig_i1 = regs->u_regs[UREG_I1];
- long ret;
- struct kernel_clone_args args = {
- .exit_signal = SIGCHLD,
- /* Reuse the parent's stack for the child. */
- .stack = regs->u_regs[UREG_FP],
- };
-
- ret = _do_fork(&args);
-
- /* If we get an error and potentially restart the system
- * call, we're screwed because copy_thread_tls() clobbered
- * the parent's %o1. So detect that case and restore it
- * here.
- */
- if ((unsigned long)ret >= -ERESTART_RESTARTBLOCK)
- regs->u_regs[UREG_I1] = orig_i1;
-
- return ret;
-}
-
-asmlinkage long sparc_vfork(struct pt_regs *regs)
-{
- unsigned long orig_i1 = regs->u_regs[UREG_I1];
- long ret;
-
- struct kernel_clone_args args = {
- .flags = CLONE_VFORK | CLONE_VM,
- .exit_signal = SIGCHLD,
- /* Reuse the parent's stack for the child. */
- .stack = regs->u_regs[UREG_FP],
- };
-
- ret = _do_fork(&args);
-
- /* If we get an error and potentially restart the system
- * call, we're screwed because copy_thread_tls() clobbered
- * the parent's %o1. So detect that case and restore it
- * here.
- */
- if ((unsigned long)ret >= -ERESTART_RESTARTBLOCK)
- regs->u_regs[UREG_I1] = orig_i1;
-
- return ret;
-}
-
-asmlinkage long sparc_clone(struct pt_regs *regs)
-{
- unsigned long orig_i1 = regs->u_regs[UREG_I1];
- unsigned int flags = lower_32_bits(regs->u_regs[UREG_I0]);
- long ret;
-
- struct kernel_clone_args args = {
- .flags = (flags & ~CSIGNAL),
- .exit_signal = (flags & CSIGNAL),
- .tls = regs->u_regs[UREG_I3],
- };
-
-#ifdef CONFIG_COMPAT
- if (test_thread_flag(TIF_32BIT)) {
- args.pidfd = compat_ptr(regs->u_regs[UREG_I2]);
- args.child_tid = compat_ptr(regs->u_regs[UREG_I4]);
- args.parent_tid = compat_ptr(regs->u_regs[UREG_I2]);
- } else
-#endif
- {
- args.pidfd = (int __user *)regs->u_regs[UREG_I2];
- args.child_tid = (int __user *)regs->u_regs[UREG_I4];
- args.parent_tid = (int __user *)regs->u_regs[UREG_I2];
- }
-
- /* Did userspace setup a separate stack for the child or are we
- * copying the parent's?
- */
- if (regs->u_regs[UREG_I1])
- args.stack = regs->u_regs[UREG_I1];
- else
- args.stack = regs->u_regs[UREG_FP];
-
- ret = _do_fork(&args);
-
- /* If we get an error and potentially restart the system
- * call, we're screwed because copy_thread_tls() clobbered
- * the parent's %o1. So detect that case and restore it
- * here.
- */
- if ((unsigned long)ret >= -ERESTART_RESTARTBLOCK)
- regs->u_regs[UREG_I1] = orig_i1;
-
- return ret;
-}
-
/* Copy a Sparc thread. The fork() return value conventions
* under SunOS are nothing short of bletcherous:
* Parent --> %o0 == childs pid, %o1 == 0