433fe39f67
Like fork and clone the clone3 syscall needs a wrapper to save callee
saved registers, which is required by the OpenRISC ABI. This came up
after auditing code following a discussion with Rob Landley and Arnd
Bergmann [0].
Tested with the clone3 kselftests and there were no issues.
[0] https://lore.kernel.org/all/41206fc7-f8ce-98aa-3718-ba3e1431e320@landley.net/T/#m9c0cdb2703813b9df4da04cf6b30de1f1aa89944
Fixes: 07e83dfbe1
("openrisc: Enable the clone3 syscall")
Cc: Rob Landley <rob@landley.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Stafford Horne <shorne@gmail.com>
33 lines
969 B
C
33 lines
969 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* OpenRISC Linux
|
|
*
|
|
* Linux architectural port borrowing liberally from similar works of
|
|
* others. All original copyrights apply as per the original source
|
|
* declaration.
|
|
*
|
|
* OpenRISC implementation:
|
|
* Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
|
|
* Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
|
|
* et al.
|
|
*/
|
|
|
|
#ifndef __ASM_OPENRISC_SYSCALLS_H
|
|
#define __ASM_OPENRISC_SYSCALLS_H
|
|
|
|
asmlinkage long sys_or1k_atomic(unsigned long type, unsigned long *v1,
|
|
unsigned long *v2);
|
|
|
|
#include <asm-generic/syscalls.h>
|
|
|
|
asmlinkage long __sys_clone(unsigned long clone_flags, unsigned long newsp,
|
|
void __user *parent_tid, void __user *child_tid, int tls);
|
|
asmlinkage long __sys_clone3(struct clone_args __user *uargs, size_t size);
|
|
asmlinkage long __sys_fork(void);
|
|
|
|
#define sys_clone __sys_clone
|
|
#define sys_clone3 __sys_clone3
|
|
#define sys_fork __sys_fork
|
|
|
|
#endif /* __ASM_OPENRISC_SYSCALLS_H */
|