process.c (98817a84ff1c755c347ac633ff017a623a631fad) process.c (714acdbd1c94e7e3ab90f6b6938f1ccb27b662f0)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/arch/m68k/kernel/process.c
4 *
5 * Copyright (C) 1995 Hamish Macdonald
6 *
7 * 68060 fixes by Jesper Skov
8 */

--- 111 unchanged lines hidden (view full) ---

120 .pidfd = (int __user *)regs->d3,
121 .child_tid = (int __user *)regs->d4,
122 .parent_tid = (int __user *)regs->d3,
123 .exit_signal = regs->d1 & CSIGNAL,
124 .stack = regs->d2,
125 .tls = regs->d5,
126 };
127
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/arch/m68k/kernel/process.c
4 *
5 * Copyright (C) 1995 Hamish Macdonald
6 *
7 * 68060 fixes by Jesper Skov
8 */

--- 111 unchanged lines hidden (view full) ---

120 .pidfd = (int __user *)regs->d3,
121 .child_tid = (int __user *)regs->d4,
122 .parent_tid = (int __user *)regs->d3,
123 .exit_signal = regs->d1 & CSIGNAL,
124 .stack = regs->d2,
125 .tls = regs->d5,
126 };
127
128 if (!legacy_clone_args_valid(&args))
129 return -EINVAL;
130
131 return _do_fork(&args);
132}
133
134/*
135 * Because extra registers are saved on the stack after the sys_clone3()
136 * arguments, this C wrapper extracts them from pt_regs * and then calls the
137 * generic sys_clone3() implementation.
138 */
139asmlinkage int m68k_clone3(struct pt_regs *regs)
140{
141 return sys_clone3((struct clone_args __user *)regs->d1, regs->d2);
142}
143
128 return _do_fork(&args);
129}
130
131/*
132 * Because extra registers are saved on the stack after the sys_clone3()
133 * arguments, this C wrapper extracts them from pt_regs * and then calls the
134 * generic sys_clone3() implementation.
135 */
136asmlinkage int m68k_clone3(struct pt_regs *regs)
137{
138 return sys_clone3((struct clone_args __user *)regs->d1, regs->d2);
139}
140
144int copy_thread_tls(unsigned long clone_flags, unsigned long usp,
145 unsigned long arg, struct task_struct *p,
146 unsigned long tls)
141int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg,
142 struct task_struct *p, unsigned long tls)
147{
148 struct fork_frame {
149 struct switch_stack sw;
150 struct pt_regs regs;
151 } *frame;
152
153 frame = (struct fork_frame *) (task_stack_page(p) + THREAD_SIZE) - 1;
154

--- 136 unchanged lines hidden ---
143{
144 struct fork_frame {
145 struct switch_stack sw;
146 struct pt_regs regs;
147 } *frame;
148
149 frame = (struct fork_frame *) (task_stack_page(p) + THREAD_SIZE) - 1;
150

--- 136 unchanged lines hidden ---