aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/arch/arc/include/uapi/asm/unistd.h51
-rw-r--r--tools/arch/hexagon/include/uapi/asm/unistd.h40
-rw-r--r--tools/arch/riscv/include/uapi/asm/unistd.h42
3 files changed, 133 insertions, 0 deletions
diff --git a/tools/arch/arc/include/uapi/asm/unistd.h b/tools/arch/arc/include/uapi/asm/unistd.h
new file mode 100644
index 000000000000..5eafa1115162
--- /dev/null
+++ b/tools/arch/arc/include/uapi/asm/unistd.h
@@ -0,0 +1,51 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10/******** no-legacy-syscalls-ABI *******/
11
12/*
13 * Non-typical guard macro to enable inclusion twice in ARCH sys.c
14 * That is how the Generic syscall wrapper generator works
15 */
16#if !defined(_UAPI_ASM_ARC_UNISTD_H) || defined(__SYSCALL)
17#define _UAPI_ASM_ARC_UNISTD_H
18
19#define __ARCH_WANT_RENAMEAT
20#define __ARCH_WANT_STAT64
21#define __ARCH_WANT_SET_GET_RLIMIT
22#define __ARCH_WANT_SYS_EXECVE
23#define __ARCH_WANT_SYS_CLONE
24#define __ARCH_WANT_SYS_VFORK
25#define __ARCH_WANT_SYS_FORK
26#define __ARCH_WANT_TIME32_SYSCALLS
27
28#define sys_mmap2 sys_mmap_pgoff
29
30#include <asm-generic/unistd.h>
31
32#define NR_syscalls __NR_syscalls
33
34/* Generic syscall (fs/filesystems.c - lost in asm-generic/unistd.h */
35#define __NR_sysfs (__NR_arch_specific_syscall + 3)
36
37/* ARC specific syscall */
38#define __NR_cacheflush (__NR_arch_specific_syscall + 0)
39#define __NR_arc_settls (__NR_arch_specific_syscall + 1)
40#define __NR_arc_gettls (__NR_arch_specific_syscall + 2)
41#define __NR_arc_usr_cmpxchg (__NR_arch_specific_syscall + 4)
42
43__SYSCALL(__NR_cacheflush, sys_cacheflush)
44__SYSCALL(__NR_arc_settls, sys_arc_settls)
45__SYSCALL(__NR_arc_gettls, sys_arc_gettls)
46__SYSCALL(__NR_arc_usr_cmpxchg, sys_arc_usr_cmpxchg)
47__SYSCALL(__NR_sysfs, sys_sysfs)
48
49#undef __SYSCALL
50
51#endif
diff --git a/tools/arch/hexagon/include/uapi/asm/unistd.h b/tools/arch/hexagon/include/uapi/asm/unistd.h
new file mode 100644
index 000000000000..432c4db1b623
--- /dev/null
+++ b/tools/arch/hexagon/include/uapi/asm/unistd.h
@@ -0,0 +1,40 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * Syscall support for Hexagon
4 *
5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 and
9 * only version 2 as published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 * 02110-1301, USA.
20 */
21
22/*
23 * The kernel pulls this unistd.h in three different ways:
24 * 1. the "normal" way which gets all the __NR defines
25 * 2. with __SYSCALL defined to produce function declarations
26 * 3. with __SYSCALL defined to produce syscall table initialization
27 * See also: syscalltab.c
28 */
29
30#define sys_mmap2 sys_mmap_pgoff
31#define __ARCH_WANT_RENAMEAT
32#define __ARCH_WANT_STAT64
33#define __ARCH_WANT_SET_GET_RLIMIT
34#define __ARCH_WANT_SYS_EXECVE
35#define __ARCH_WANT_SYS_CLONE
36#define __ARCH_WANT_SYS_VFORK
37#define __ARCH_WANT_SYS_FORK
38#define __ARCH_WANT_TIME32_SYSCALLS
39
40#include <asm-generic/unistd.h>
diff --git a/tools/arch/riscv/include/uapi/asm/unistd.h b/tools/arch/riscv/include/uapi/asm/unistd.h
new file mode 100644
index 000000000000..0e2eeeb1fd27
--- /dev/null
+++ b/tools/arch/riscv/include/uapi/asm/unistd.h
@@ -0,0 +1,42 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * Copyright (C) 2018 David Abdurachmanov <david.abdurachmanov@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifdef __LP64__
19#define __ARCH_WANT_NEW_STAT
20#define __ARCH_WANT_SET_GET_RLIMIT
21#endif /* __LP64__ */
22
23#include <asm-generic/unistd.h>
24
25/*
26 * Allows the instruction cache to be flushed from userspace. Despite RISC-V
27 * having a direct 'fence.i' instruction available to userspace (which we
28 * can't trap!), that's not actually viable when running on Linux because the
29 * kernel might schedule a process on another hart. There is no way for
30 * userspace to handle this without invoking the kernel (as it doesn't know the
31 * thread->hart mappings), so we've defined a RISC-V specific system call to
32 * flush the instruction cache.
33 *
34 * __NR_riscv_flush_icache is defined to flush the instruction cache over an
35 * address range, with the flush applying to either all threads or just the
36 * caller. We don't currently do anything with the address range, that's just
37 * in there for forwards compatibility.
38 */
39#ifndef __NR_riscv_flush_icache
40#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
41#endif
42__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)