Commit 256a6f43 authored by Huacai Chen's avatar Huacai Chen

Merge tag 'asm-generic-6.11' into loongarch-next

LoongArch architecture changes for 6.11 depend on the asm-generic
changes to avoid confliction, so merge them to create a base.
parents 0c383648 1a7b7326
...@@ -1219,7 +1219,7 @@ remove-stale-files: ...@@ -1219,7 +1219,7 @@ remove-stale-files:
$(Q)$(srctree)/scripts/remove-stale-files $(Q)$(srctree)/scripts/remove-stale-files
# Support for using generic headers in asm-generic # Support for using generic headers in asm-generic
asm-generic := -f $(srctree)/scripts/Makefile.asm-generic obj asm-generic := -f $(srctree)/scripts/Makefile.asm-headers obj
PHONY += asm-generic uapi-asm-generic PHONY += asm-generic uapi-asm-generic
asm-generic: uapi-asm-generic asm-generic: uapi-asm-generic
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_32.h
generic-y += extable.h generic-y += extable.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_ARC_UNISTD_H
#define _ASM_ARC_UNISTD_H
#include <uapi/asm/unistd.h>
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_FORK
#define NR_syscalls __NR_syscalls
#endif
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_32.h
generic-y += ucontext.h generic-y += ucontext.h
...@@ -7,46 +7,4 @@ ...@@ -7,46 +7,4 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
/******** no-legacy-syscalls-ABI *******/ #include <asm/unistd_32.h>
/*
* Non-typical guard macro to enable inclusion twice in ARCH sys.c
* That is how the Generic syscall wrapper generator works
*/
#if !defined(_UAPI_ASM_ARC_UNISTD_H) || defined(__SYSCALL)
#define _UAPI_ASM_ARC_UNISTD_H
#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_TIME32_SYSCALLS
#define sys_mmap2 sys_mmap_pgoff
#include <asm-generic/unistd.h>
#define NR_syscalls __NR_syscalls
/* Generic syscall (fs/filesystems.c - lost in asm-generic/unistd.h */
#define __NR_sysfs (__NR_arch_specific_syscall + 3)
/* ARC specific syscall */
#define __NR_cacheflush (__NR_arch_specific_syscall + 0)
#define __NR_arc_settls (__NR_arch_specific_syscall + 1)
#define __NR_arc_gettls (__NR_arch_specific_syscall + 2)
#define __NR_arc_usr_cmpxchg (__NR_arch_specific_syscall + 4)
__SYSCALL(__NR_cacheflush, sys_cacheflush)
__SYSCALL(__NR_arc_settls, sys_arc_settls)
__SYSCALL(__NR_arc_gettls, sys_arc_gettls)
__SYSCALL(__NR_arc_usr_cmpxchg, sys_arc_usr_cmpxchg)
__SYSCALL(__NR_sysfs, sys_sysfs)
#undef __SYSCALL
#endif
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 += arc time32 renameat stat64 rlimit
...@@ -8,11 +8,12 @@ ...@@ -8,11 +8,12 @@
#define sys_clone sys_clone_wrapper #define sys_clone sys_clone_wrapper
#define sys_clone3 sys_clone3_wrapper #define sys_clone3 sys_clone3_wrapper
#define sys_mmap2 sys_mmap_pgoff
#undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = (call), #define __SYSCALL(nr, call) [nr] = (call),
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
void *sys_call_table[NR_syscalls] = { void *sys_call_table[NR_syscalls] = {
[0 ... NR_syscalls-1] = sys_ni_syscall, [0 ... NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
}; };
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
/* /*
* Unimplemented (or alternatively implemented) syscalls * Unimplemented (or alternatively implemented) syscalls
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_32.h
syscall-y += syscall_table_64.h
# arm32 syscall table used by lib/compat_audit.c:
syscall-y += unistd_32.h
# same constants with prefixes, used by vdso, seccomp and sigreturn:
syscall-y += unistd_compat_32.h
generic-y += early_ioremap.h generic-y += early_ioremap.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
generic-y += qrwlock.h generic-y += qrwlock.h
......
...@@ -8,13 +8,13 @@ ...@@ -8,13 +8,13 @@
#ifndef _ASM_SECCOMP_H #ifndef _ASM_SECCOMP_H
#define _ASM_SECCOMP_H #define _ASM_SECCOMP_H
#include <asm/unistd.h> #include <asm/unistd_compat_32.h>
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
#define __NR_seccomp_read_32 __NR_compat_read #define __NR_seccomp_read_32 __NR_compat32_read
#define __NR_seccomp_write_32 __NR_compat_write #define __NR_seccomp_write_32 __NR_compat32_write
#define __NR_seccomp_exit_32 __NR_compat_exit #define __NR_seccomp_exit_32 __NR_compat32_exit
#define __NR_seccomp_sigreturn_32 __NR_compat_rt_sigreturn #define __NR_seccomp_sigreturn_32 __NR_compat32_rt_sigreturn
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_COMPAT */
#include <asm-generic/seccomp.h> #include <asm-generic/seccomp.h>
...@@ -23,8 +23,9 @@ ...@@ -23,8 +23,9 @@
#define SECCOMP_ARCH_NATIVE_NR NR_syscalls #define SECCOMP_ARCH_NATIVE_NR NR_syscalls
#define SECCOMP_ARCH_NATIVE_NAME "aarch64" #define SECCOMP_ARCH_NATIVE_NAME "aarch64"
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
#include <asm/unistd_compat_32.h>
# define SECCOMP_ARCH_COMPAT AUDIT_ARCH_ARM # define SECCOMP_ARCH_COMPAT AUDIT_ARCH_ARM
# define SECCOMP_ARCH_COMPAT_NR __NR_compat_syscalls # define SECCOMP_ARCH_COMPAT_NR __NR_compat32_syscalls
# define SECCOMP_ARCH_COMPAT_NAME "arm" # define SECCOMP_ARCH_COMPAT_NAME "arm"
#endif #endif
......
...@@ -16,21 +16,6 @@ ...@@ -16,21 +16,6 @@
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_VFORK
/*
* Compat syscall numbers used by the AArch64 kernel.
*/
#define __NR_compat_restart_syscall 0
#define __NR_compat_exit 1
#define __NR_compat_read 3
#define __NR_compat_write 4
#define __NR_compat_gettimeofday 78
#define __NR_compat_sigreturn 119
#define __NR_compat_rt_sigreturn 173
#define __NR_compat_clock_gettime 263
#define __NR_compat_clock_getres 264
#define __NR_compat_clock_gettime64 403
#define __NR_compat_clock_getres_time64 406
/* /*
* The following SVCs are ARM private. * The following SVCs are ARM private.
*/ */
...@@ -38,14 +23,11 @@ ...@@ -38,14 +23,11 @@
#define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE + 2) #define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE + 2)
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5) #define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5)
#define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800) #define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800)
#define __NR_compat_syscalls 463
#endif #endif
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_NEW_STAT
#ifndef __COMPAT_SYSCALL_NR #include <asm/unistd_64.h>
#include <uapi/asm/unistd.h>
#endif
#define NR_syscalls (__NR_syscalls) #define NR_syscalls (__NR_syscalls)
This diff is collapsed.
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <asm/barrier.h> #include <asm/barrier.h>
#include <asm/unistd.h> #include <asm/unistd_compat_32.h>
#include <asm/errno.h> #include <asm/errno.h>
#include <asm/vdso/compat_barrier.h> #include <asm/vdso/compat_barrier.h>
...@@ -24,7 +24,7 @@ int gettimeofday_fallback(struct __kernel_old_timeval *_tv, ...@@ -24,7 +24,7 @@ int gettimeofday_fallback(struct __kernel_old_timeval *_tv,
register struct timezone *tz asm("r1") = _tz; register struct timezone *tz asm("r1") = _tz;
register struct __kernel_old_timeval *tv asm("r0") = _tv; register struct __kernel_old_timeval *tv asm("r0") = _tv;
register long ret asm ("r0"); register long ret asm ("r0");
register long nr asm("r7") = __NR_compat_gettimeofday; register long nr asm("r7") = __NR_compat32_gettimeofday;
asm volatile( asm volatile(
" swi #0\n" " swi #0\n"
...@@ -41,7 +41,7 @@ long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) ...@@ -41,7 +41,7 @@ long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
register struct __kernel_timespec *ts asm("r1") = _ts; register struct __kernel_timespec *ts asm("r1") = _ts;
register clockid_t clkid asm("r0") = _clkid; register clockid_t clkid asm("r0") = _clkid;
register long ret asm ("r0"); register long ret asm ("r0");
register long nr asm("r7") = __NR_compat_clock_gettime64; register long nr asm("r7") = __NR_compat32_clock_gettime64;
asm volatile( asm volatile(
" swi #0\n" " swi #0\n"
...@@ -58,7 +58,7 @@ long clock_gettime32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) ...@@ -58,7 +58,7 @@ long clock_gettime32_fallback(clockid_t _clkid, struct old_timespec32 *_ts)
register struct old_timespec32 *ts asm("r1") = _ts; register struct old_timespec32 *ts asm("r1") = _ts;
register clockid_t clkid asm("r0") = _clkid; register clockid_t clkid asm("r0") = _clkid;
register long ret asm ("r0"); register long ret asm ("r0");
register long nr asm("r7") = __NR_compat_clock_gettime; register long nr asm("r7") = __NR_compat32_clock_gettime;
asm volatile( asm volatile(
" swi #0\n" " swi #0\n"
...@@ -75,7 +75,7 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) ...@@ -75,7 +75,7 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
register struct __kernel_timespec *ts asm("r1") = _ts; register struct __kernel_timespec *ts asm("r1") = _ts;
register clockid_t clkid asm("r0") = _clkid; register clockid_t clkid asm("r0") = _clkid;
register long ret asm ("r0"); register long ret asm ("r0");
register long nr asm("r7") = __NR_compat_clock_getres_time64; register long nr asm("r7") = __NR_compat32_clock_getres_time64;
asm volatile( asm volatile(
" swi #0\n" " swi #0\n"
...@@ -92,7 +92,7 @@ int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) ...@@ -92,7 +92,7 @@ int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts)
register struct old_timespec32 *ts asm("r1") = _ts; register struct old_timespec32 *ts asm("r1") = _ts;
register clockid_t clkid asm("r0") = _clkid; register clockid_t clkid asm("r0") = _clkid;
register long ret asm ("r0"); register long ret asm ("r0");
register long nr asm("r7") = __NR_compat_clock_getres; register long nr asm("r7") = __NR_compat32_clock_getres;
asm volatile( asm volatile(
" swi #0\n" " swi #0\n"
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_64.h
generic-y += kvm_para.h generic-y += kvm_para.h
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* #include <asm/unistd_64.h>
* Copyright (C) 2012 ARM Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_NEW_STAT
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_TIME32_SYSCALLS
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_MEMFD_SECRET
#include <asm-generic/unistd.h>
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 +=
syscall_abis_64 += renameat newstat rlimit memfd_secret
syscalltbl = arch/arm64/tools/syscall_%.tbl
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <asm/signal32.h> #include <asm/signal32.h>
#include <asm/traps.h> #include <asm/traps.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/unistd.h> #include <asm/unistd_compat_32.h>
#include <asm/vdso.h> #include <asm/vdso.h>
struct compat_vfp_sigframe { struct compat_vfp_sigframe {
...@@ -451,7 +451,7 @@ int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set, ...@@ -451,7 +451,7 @@ int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
void compat_setup_restart_syscall(struct pt_regs *regs) void compat_setup_restart_syscall(struct pt_regs *regs)
{ {
regs->regs[7] = __NR_compat_restart_syscall; regs->regs[7] = __NR_compat32_restart_syscall;
} }
/* /*
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* need two 16-bit instructions. * need two 16-bit instructions.
*/ */
#include <asm/unistd.h> #include <asm/unistd_compat_32.h>
.section .rodata .section .rodata
.globl __aarch32_sigret_code_start .globl __aarch32_sigret_code_start
...@@ -22,26 +22,26 @@ __aarch32_sigret_code_start: ...@@ -22,26 +22,26 @@ __aarch32_sigret_code_start:
/* /*
* ARM Code * ARM Code
*/ */
.byte __NR_compat_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat_sigreturn .byte __NR_compat32_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat32_sigreturn
.byte __NR_compat_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat_sigreturn .byte __NR_compat32_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat32_sigreturn
/* /*
* Thumb code * Thumb code
*/ */
.byte __NR_compat_sigreturn, 0x27 // svc #__NR_compat_sigreturn .byte __NR_compat32_sigreturn, 0x27 // svc #__NR_compat32_sigreturn
.byte __NR_compat_sigreturn, 0xdf // mov r7, #__NR_compat_sigreturn .byte __NR_compat32_sigreturn, 0xdf // mov r7, #__NR_compat32_sigreturn
/* /*
* ARM code * ARM code
*/ */
.byte __NR_compat_rt_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat_rt_sigreturn .byte __NR_compat32_rt_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat32_rt_sigreturn
.byte __NR_compat_rt_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat_rt_sigreturn .byte __NR_compat32_rt_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat32_rt_sigreturn
/* /*
* Thumb code * Thumb code
*/ */
.byte __NR_compat_rt_sigreturn, 0x27 // svc #__NR_compat_rt_sigreturn .byte __NR_compat32_rt_sigreturn, 0x27 // svc #__NR_compat32_rt_sigreturn
.byte __NR_compat_rt_sigreturn, 0xdf // mov r7, #__NR_compat_rt_sigreturn .byte __NR_compat32_rt_sigreturn, 0xdf // mov r7, #__NR_compat32_rt_sigreturn
.globl __aarch32_sigret_code_end .globl __aarch32_sigret_code_end
__aarch32_sigret_code_end: __aarch32_sigret_code_end:
...@@ -48,14 +48,16 @@ asmlinkage long __arm64_sys_ni_syscall(const struct pt_regs *__unused) ...@@ -48,14 +48,16 @@ asmlinkage long __arm64_sys_ni_syscall(const struct pt_regs *__unused)
*/ */
#define __arm64_sys_personality __arm64_sys_arm64_personality #define __arm64_sys_personality __arm64_sys_arm64_personality
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, sym) asmlinkage long __arm64_##sym(const struct pt_regs *); #define __SYSCALL(nr, sym) asmlinkage long __arm64_##sym(const struct pt_regs *);
#include <asm/unistd.h> #include <asm/syscall_table_64.h>
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, sym) [nr] = __arm64_##sym, #define __SYSCALL(nr, sym) [nr] = __arm64_##sym,
const syscall_fn_t sys_call_table[__NR_syscalls] = { const syscall_fn_t sys_call_table[__NR_syscalls] = {
[0 ... __NR_syscalls - 1] = __arm64_sys_ni_syscall, [0 ... __NR_syscalls - 1] = __arm64_sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table_64.h>
}; };
...@@ -5,17 +5,12 @@ ...@@ -5,17 +5,12 @@
* Copyright (C) 2015 ARM Ltd. * Copyright (C) 2015 ARM Ltd.
*/ */
/*
* Needed to avoid conflicting __NR_* macros between uapi/asm/unistd.h and
* asm/unistd32.h.
*/
#define __COMPAT_SYSCALL_NR
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <asm/syscall.h> #include <asm/syscall.h>
#include <asm/unistd_compat_32.h>
asmlinkage long compat_sys_sigreturn(void); asmlinkage long compat_sys_sigreturn(void);
asmlinkage long compat_sys_rt_sigreturn(void); asmlinkage long compat_sys_rt_sigreturn(void);
...@@ -122,14 +117,16 @@ COMPAT_SYSCALL_DEFINE6(aarch32_fallocate, int, fd, int, mode, ...@@ -122,14 +117,16 @@ COMPAT_SYSCALL_DEFINE6(aarch32_fallocate, int, fd, int, mode,
return ksys_fallocate(fd, mode, arg_u64(offset), arg_u64(len)); return ksys_fallocate(fd, mode, arg_u64(offset), arg_u64(len));
} }
#define __SYSCALL_WITH_COMPAT(nr, sym, compat) __SYSCALL(nr, compat)
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, sym) asmlinkage long __arm64_##sym(const struct pt_regs *); #define __SYSCALL(nr, sym) asmlinkage long __arm64_##sym(const struct pt_regs *);
#include <asm/unistd32.h> #include <asm/syscall_table_32.h>
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, sym) [nr] = __arm64_##sym, #define __SYSCALL(nr, sym) [nr] = __arm64_##sym,
const syscall_fn_t compat_sys_call_table[__NR_compat_syscalls] = { const syscall_fn_t compat_sys_call_table[__NR_compat32_syscalls] = {
[0 ... __NR_compat_syscalls - 1] = __arm64_sys_ni_syscall, [0 ... __NR_compat32_syscalls - 1] = __arm64_sys_ni_syscall,
#include <asm/unistd32.h> #include <asm/syscall_table_32.h>
}; };
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <asm/syscall.h> #include <asm/syscall.h>
#include <asm/thread_info.h> #include <asm/thread_info.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/unistd_compat_32.h>
long compat_arm_syscall(struct pt_regs *regs, int scno); long compat_arm_syscall(struct pt_regs *regs, int scno);
long sys_ni_syscall(void); long sys_ni_syscall(void);
...@@ -153,7 +154,7 @@ void do_el0_svc(struct pt_regs *regs) ...@@ -153,7 +154,7 @@ void do_el0_svc(struct pt_regs *regs)
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
void do_el0_svc_compat(struct pt_regs *regs) void do_el0_svc_compat(struct pt_regs *regs)
{ {
el0_svc_common(regs, regs->regs[7], __NR_compat_syscalls, el0_svc_common(regs, regs->regs[7], __NR_compat32_syscalls,
compat_sys_call_table); compat_sys_call_table);
} }
#endif #endif
...@@ -3,12 +3,16 @@ ...@@ -3,12 +3,16 @@
gen := arch/$(ARCH)/include/generated gen := arch/$(ARCH)/include/generated
kapi := $(gen)/asm kapi := $(gen)/asm
kapi-hdrs-y := $(kapi)/cpucap-defs.h $(kapi)/sysreg-defs.h kapisyshdr-y := cpucap-defs.h sysreg-defs.h
kapi-hdrs-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
targets += $(addprefix ../../../, $(kapi-hdrs-y)) targets += $(addprefix ../../../, $(kapi-hdrs-y))
PHONY += kapi PHONY += kapi
all: $(syscall64) kapi
kapi: $(kapi-hdrs-y) kapi: $(kapi-hdrs-y)
quiet_cmd_gen_cpucaps = GEN $@ quiet_cmd_gen_cpucaps = GEN $@
......
This diff is collapsed.
../../../scripts/syscall.tbl
\ No newline at end of file
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y := syscall_table_32.h
generic-y += asm-offsets.h generic-y += asm-offsets.h
generic-y += extable.h generic-y += extable.h
generic-y += gpio.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
generic-y += qrwlock.h generic-y += qrwlock.h
......
...@@ -2,4 +2,7 @@ ...@@ -2,4 +2,7 @@
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SYS_CLONE
#define NR_syscalls (__NR_syscalls) #define NR_syscalls (__NR_syscalls)
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_32.h
generic-y += ucontext.h generic-y += ucontext.h
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#define __ARCH_WANT_STAT64 #include <asm/unistd_32.h>
#define __ARCH_WANT_NEW_STAT
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_TIME32_SYSCALLS
#define __ARCH_WANT_SYNC_FILE_RANGE2
#include <asm-generic/unistd.h>
#define __NR_set_thread_area (__NR_arch_specific_syscall + 0) #define __NR_sync_file_range2 84
__SYSCALL(__NR_set_thread_area, sys_set_thread_area) #undef __NR_sync_file_range
#define __NR_cacheflush (__NR_arch_specific_syscall + 1)
__SYSCALL(__NR_cacheflush, sys_cacheflush)
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 += csky time32 stat64 rlimit
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call)[nr] = (call), #define __SYSCALL(nr, call)[nr] = (call),
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#define sys_fadvise64_64 sys_csky_fadvise64_64 #define sys_fadvise64_64 sys_csky_fadvise64_64
#define sys_sync_file_range sys_sync_file_range2
void * const sys_call_table[__NR_syscalls] __page_aligned_data = { void * const sys_call_table[__NR_syscalls] __page_aligned_data = {
[0 ... __NR_syscalls - 1] = sys_ni_syscall, [0 ... __NR_syscalls - 1] = sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
}; };
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_32.h
generic-y += extable.h generic-y += extable.h
generic-y += iomap.h generic-y += iomap.h
generic-y += kvm_para.h generic-y += kvm_para.h
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_FORK
#define __ARCH_BROKEN_SYS_CLONE3
#include <uapi/asm/unistd.h>
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_32.h
generic-y += ucontext.h generic-y += ucontext.h
...@@ -27,15 +27,7 @@ ...@@ -27,15 +27,7 @@
* See also: syscalltab.c * See also: syscalltab.c
*/ */
#define sys_mmap2 sys_mmap_pgoff #include <asm/unistd_32.h>
#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_TIME32_SYSCALLS
#define __ARCH_WANT_SYNC_FILE_RANGE2
#include <asm-generic/unistd.h> #define __NR_sync_file_range2 84
#undef __NR_sync_file_range
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 += hexagon time32 stat64 rlimit renameat
...@@ -11,8 +11,10 @@ ...@@ -11,8 +11,10 @@
#include <asm/syscall.h> #include <asm/syscall.h>
#undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = (call), #define __SYSCALL(nr, call) [nr] = (call),
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#define sys_mmap2 sys_mmap_pgoff
SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice, SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice,
SC_ARG64(offset), SC_ARG64(len)) SC_ARG64(offset), SC_ARG64(len))
...@@ -21,6 +23,8 @@ SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice, ...@@ -21,6 +23,8 @@ SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice,
} }
#define sys_fadvise64_64 sys_hexagon_fadvise64_64 #define sys_fadvise64_64 sys_hexagon_fadvise64_64
#define sys_sync_file_range sys_sync_file_range2
void *sys_call_table[__NR_syscalls] = { void *sys_call_table[__NR_syscalls] = {
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
}; };
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_64.h
generated-y += orc_hash.h generated-y += orc_hash.h
generic-y += dma-contiguous.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
generic-y += parport.h generic-y += parport.h
generic-y += early_ioremap.h generic-y += early_ioremap.h
generic-y += qrwlock.h generic-y += qrwlock.h
generic-y += qspinlock.h generic-y += qspinlock.h
generic-y += rwsem.h
generic-y += segment.h
generic-y += user.h generic-y += user.h
generic-y += stat.h
generic-y += fcntl.h
generic-y += ioctl.h generic-y += ioctl.h
generic-y += ioctls.h
generic-y += mman.h
generic-y += msgbuf.h
generic-y += sembuf.h
generic-y += shmbuf.h
generic-y += statfs.h generic-y += statfs.h
generic-y += socket.h
generic-y += sockios.h
generic-y += termbits.h
generic-y += poll.h
generic-y += param.h generic-y += param.h
generic-y += posix_types.h
generic-y += resource.h
...@@ -8,4 +8,6 @@ ...@@ -8,4 +8,6 @@
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
#define __ARCH_WANT_SYS_CLONE
#define NR_syscalls (__NR_syscalls) #define NR_syscalls (__NR_syscalls)
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_64.h
generic-y += kvm_para.h generic-y += kvm_para.h
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#include <asm-generic/unistd.h> #include <asm/unistd_64.h>
# SPDX-License-Identifier: GPL-2.0
# No special ABIs on loongarch so far
syscall_abis_64 +=
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = (call), #define __SYSCALL(nr, call) [nr] = (call),
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long, SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long,
prot, unsigned long, flags, unsigned long, fd, unsigned long, offset) prot, unsigned long, flags, unsigned long, fd, unsigned long, offset)
...@@ -32,7 +33,7 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long, ...@@ -32,7 +33,7 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long,
void *sys_call_table[__NR_syscalls] = { void *sys_call_table[__NR_syscalls] = {
[0 ... __NR_syscalls - 1] = sys_ni_syscall, [0 ... __NR_syscalls - 1] = sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table_64.h>
}; };
typedef long (*sys_call_fn)(unsigned long, unsigned long, typedef long (*sys_call_fn)(unsigned long, unsigned long,
......
...@@ -30,6 +30,5 @@ ...@@ -30,6 +30,5 @@
#define __ARCH_WANT_SYS_SIGPROCMASK #define __ARCH_WANT_SYS_SIGPROCMASK
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE3
#endif /* _ASM_M68K_UNISTD_H_ */ #endif /* _ASM_M68K_UNISTD_H_ */
...@@ -58,7 +58,6 @@ ...@@ -58,7 +58,6 @@
# endif # endif
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
/* whitelists for checksyscalls */ /* whitelists for checksyscalls */
#define __IGNORE_fadvise64_64 #define __IGNORE_fadvise64_64
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_32.h
generic-y += cmpxchg.h generic-y += cmpxchg.h
generic-y += extable.h generic-y += extable.h
generic-y += kvm_para.h generic-y += kvm_para.h
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_UNISTD_H
#define __ASM_UNISTD_H
#include <uapi/asm/unistd.h>
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_BROKEN_SYS_CLONE3
#endif
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_32.h
generic-y += ucontext.h generic-y += ucontext.h
...@@ -16,16 +16,4 @@ ...@@ -16,16 +16,4 @@
* *
*/ */
#define sys_mmap2 sys_mmap_pgoff #include <asm/unistd_32.h>
#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_TIME32_SYSCALLS
/* Use the standard ABI for syscalls */
#include <asm-generic/unistd.h>
/* Additional Nios II specific syscalls. */
#define __NR_cacheflush (__NR_arch_specific_syscall)
__SYSCALL(__NR_cacheflush, sys_cacheflush)
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 += nios2 time32 stat64 renameat rlimit
...@@ -9,10 +9,12 @@ ...@@ -9,10 +9,12 @@
#include <asm/syscalls.h> #include <asm/syscalls.h>
#undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = (call), #define __SYSCALL(nr, call) [nr] = (call),
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#define sys_mmap2 sys_mmap_pgoff
void *sys_call_table[__NR_syscalls] = { void *sys_call_table[__NR_syscalls] = {
[0 ... __NR_syscalls-1] = sys_ni_syscall, [0 ... __NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
}; };
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_32.h
generic-y += extable.h generic-y += extable.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += parport.h generic-y += parport.h
......
...@@ -25,8 +25,4 @@ asmlinkage long __sys_clone(unsigned long clone_flags, unsigned long newsp, ...@@ -25,8 +25,4 @@ asmlinkage long __sys_clone(unsigned long clone_flags, unsigned long newsp,
asmlinkage long __sys_clone3(struct clone_args __user *uargs, size_t size); asmlinkage long __sys_clone3(struct clone_args __user *uargs, size_t size);
asmlinkage long __sys_fork(void); 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 */ #endif /* __ASM_OPENRISC_SYSCALLS_H */
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_TIME32_SYSCALLS
#include <uapi/asm/unistd.h>
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_32.h
generic-y += ucontext.h generic-y += ucontext.h
...@@ -17,17 +17,4 @@ ...@@ -17,17 +17,4 @@
* (at your option) any later version. * (at your option) any later version.
*/ */
#define sys_mmap2 sys_mmap_pgoff #include <asm/unistd_32.h>
#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_STAT64
#define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_TIME32_SYSCALLS
#include <asm-generic/unistd.h>
#define __NR_or1k_atomic __NR_arch_specific_syscall
__SYSCALL(__NR_or1k_atomic, sys_or1k_atomic)
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 += or1k time32 stat64 rlimit renameat
...@@ -16,9 +16,14 @@ ...@@ -16,9 +16,14 @@
#include <asm/syscalls.h> #include <asm/syscalls.h>
#undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = (call), #define __SYSCALL(nr, call) [nr] = (call),
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#define sys_mmap2 sys_mmap_pgoff
#define sys_clone __sys_clone
#define sys_clone3 __sys_clone3
#define sys_fork __sys_fork
void *sys_call_table[__NR_syscalls] = { void *sys_call_table[__NR_syscalls] = {
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
}; };
...@@ -160,7 +160,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ ...@@ -160,7 +160,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_COMPAT_SYS_SENDFILE #define __ARCH_WANT_COMPAT_SYS_SENDFILE
#define __ARCH_WANT_COMPAT_STAT #define __ARCH_WANT_COMPAT_STAT
......
...@@ -51,7 +51,6 @@ ...@@ -51,7 +51,6 @@
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _ASM_POWERPC_UNISTD_H_ */ #endif /* _ASM_POWERPC_UNISTD_H_ */
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += syscall_table_32.h
syscall-y += syscall_table_64.h
generic-y += early_ioremap.h generic-y += early_ioremap.h
generic-y += flat.h generic-y += flat.h
generic-y += kvm_para.h generic-y += kvm_para.h
......
#include <asm/bitsperlong.h>
#if __BITS_PER_LONG == 64
#include <asm/syscall_table_64.h>
#else
#include <asm/syscall_table_32.h>
#endif
...@@ -3,11 +3,6 @@ ...@@ -3,11 +3,6 @@
* Copyright (C) 2012 Regents of the University of California * Copyright (C) 2012 Regents of the University of California
*/ */
/*
* There is explicitly no include guard here because this file is expected to
* be included multiple times.
*/
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
...@@ -21,6 +16,14 @@ ...@@ -21,6 +16,14 @@
#define __ARCH_WANT_COMPAT_FADVISE64_64 #define __ARCH_WANT_COMPAT_FADVISE64_64
#endif #endif
#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
#define __ARCH_WANT_NEW_STAT
#define __ARCH_WANT_SET_GET_RLIMIT
#endif /* __LP64__ */
#define __ARCH_WANT_MEMFD_SECRET
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
#define NR_syscalls (__NR_syscalls) #define NR_syscalls (__NR_syscalls)
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
syscall-y += unistd_32.h
syscall-y += unistd_64.h
...@@ -14,41 +14,10 @@ ...@@ -14,41 +14,10 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
#include <asm/bitsperlong.h>
#if defined(__LP64__) && !defined(__SYSCALL_COMPAT) #if __BITS_PER_LONG == 64
#define __ARCH_WANT_NEW_STAT #include <asm/unistd_64.h>
#define __ARCH_WANT_SET_GET_RLIMIT #else
#endif /* __LP64__ */ #include <asm/unistd_32.h>
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_MEMFD_SECRET
#include <asm-generic/unistd.h>
/*
* Allows the instruction cache to be flushed from userspace. Despite RISC-V
* having a direct 'fence.i' instruction available to userspace (which we
* can't trap!), that's not actually viable when running on Linux because the
* kernel might schedule a process on another hart. There is no way for
* userspace to handle this without invoking the kernel (as it doesn't know the
* thread->hart mappings), so we've defined a RISC-V specific system call to
* flush the instruction cache.
*
* __NR_riscv_flush_icache is defined to flush the instruction cache over an
* address range, with the flush applying to either all threads or just the
* caller. We don't currently do anything with the address range, that's just
* in there for forwards compatibility.
*/
#ifndef __NR_riscv_flush_icache
#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
#endif
__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
/*
* Allows userspace to query the kernel for CPU architecture and
* microarchitecture details across a given set of CPUs.
*/
#ifndef __NR_riscv_hwprobe
#define __NR_riscv_hwprobe (__NR_arch_specific_syscall + 14)
#endif #endif
__SYSCALL(__NR_riscv_hwprobe, sys_riscv_hwprobe)
# SPDX-License-Identifier: GPL-2.0
syscall_abis_32 += riscv memfd_secret
syscall_abis_64 += riscv newstat rlimit memfd_secret
...@@ -8,9 +8,11 @@ ...@@ -8,9 +8,11 @@
#include <asm-generic/syscalls.h> #include <asm-generic/syscalls.h>
#include <asm/syscall.h> #include <asm/syscall.h>
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, compat)
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call) asmlinkage long __riscv_##call(const struct pt_regs *); #define __SYSCALL(nr, call) asmlinkage long __riscv_##call(const struct pt_regs *);
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = __riscv_##call, #define __SYSCALL(nr, call) [nr] = __riscv_##call,
...@@ -19,5 +21,5 @@ asmlinkage long compat_sys_rt_sigreturn(void); ...@@ -19,5 +21,5 @@ asmlinkage long compat_sys_rt_sigreturn(void);
void * const compat_sys_call_table[__NR_syscalls] = { void * const compat_sys_call_table[__NR_syscalls] = {
[0 ... __NR_syscalls - 1] = __riscv_sys_ni_syscall, [0 ... __NR_syscalls - 1] = __riscv_sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table_32.h>
}; };
...@@ -9,14 +9,16 @@ ...@@ -9,14 +9,16 @@
#include <asm-generic/syscalls.h> #include <asm-generic/syscalls.h>
#include <asm/syscall.h> #include <asm/syscall.h>
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call) asmlinkage long __riscv_##call(const struct pt_regs *); #define __SYSCALL(nr, call) asmlinkage long __riscv_##call(const struct pt_regs *);
#include <asm/unistd.h> #include <asm/syscall_table.h>
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = __riscv_##call, #define __SYSCALL(nr, call) [nr] = __riscv_##call,
void * const sys_call_table[__NR_syscalls] = { void * const sys_call_table[__NR_syscalls] = {
[0 ... __NR_syscalls - 1] = __riscv_sys_ni_syscall, [0 ... __NR_syscalls - 1] = __riscv_sys_ni_syscall,
#include <asm/unistd.h> #include <asm/syscall_table.h>
}; };
...@@ -35,6 +35,5 @@ ...@@ -35,6 +35,5 @@
#define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#endif /* _ASM_S390_UNISTD_H_ */ #endif /* _ASM_S390_UNISTD_H_ */
...@@ -28,4 +28,6 @@ ...@@ -28,4 +28,6 @@
# define __ARCH_WANT_SYS_VFORK # define __ARCH_WANT_SYS_VFORK
# define __ARCH_WANT_SYS_CLONE # define __ARCH_WANT_SYS_CLONE
#define __ARCH_BROKEN_SYS_CLONE3
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
...@@ -49,6 +49,8 @@ ...@@ -49,6 +49,8 @@
#define __ARCH_WANT_COMPAT_STAT #define __ARCH_WANT_COMPAT_STAT
#endif #endif
#define __ARCH_BROKEN_SYS_CLONE3
#ifdef __32bit_syscall_numbers__ #ifdef __32bit_syscall_numbers__
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, /* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
* it never had the plain ones and there is no value to adding those * it never had the plain ones and there is no value to adding those
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
generic-y += bpf_perf_event.h
generic-y += bug.h generic-y += bug.h
generic-y += compat.h generic-y += compat.h
generic-y += current.h generic-y += current.h
......
/* SPDX-License-Identifier: GPL-2.0 */
/*
* asm-generic/bpf_perf_event.h is part of the uapi headers, but since
* arch/um has no uapi of its on, we can't use the "generic-y"
* Kbuild rule to generate the wrapper
*/
#include <asm-generic/bpf_perf_event.h>
...@@ -56,6 +56,5 @@ ...@@ -56,6 +56,5 @@
# define __ARCH_WANT_SYS_FORK # define __ARCH_WANT_SYS_FORK
# define __ARCH_WANT_SYS_VFORK # define __ARCH_WANT_SYS_VFORK
# define __ARCH_WANT_SYS_CLONE # define __ARCH_WANT_SYS_CLONE
# define __ARCH_WANT_SYS_CLONE3
#endif /* _ASM_X86_UNISTD_H */ #endif /* _ASM_X86_UNISTD_H */
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#define _XTENSA_UNISTD_H #define _XTENSA_UNISTD_H
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
#define __ARCH_WANT_NEW_STAT #define __ARCH_WANT_NEW_STAT
......
...@@ -9,7 +9,6 @@ mandatory-y += archrandom.h ...@@ -9,7 +9,6 @@ mandatory-y += archrandom.h
mandatory-y += barrier.h mandatory-y += barrier.h
mandatory-y += bitops.h mandatory-y += bitops.h
mandatory-y += bug.h mandatory-y += bug.h
mandatory-y += bugs.h
mandatory-y += cacheflush.h mandatory-y += cacheflush.h
mandatory-y += cfi.h mandatory-y += cfi.h
mandatory-y += checksum.h mandatory-y += checksum.h
......
...@@ -97,8 +97,5 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr) ...@@ -97,8 +97,5 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
#define set_fixmap_io(idx, phys) \ #define set_fixmap_io(idx, phys) \
__set_fixmap(idx, phys, FIXMAP_PAGE_IO) __set_fixmap(idx, phys, FIXMAP_PAGE_IO)
#define set_fixmap_offset_io(idx, phys) \
__set_fixmap_offset(idx, phys, FIXMAP_PAGE_IO)
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* __ASM_GENERIC_FIXMAP_H */ #endif /* __ASM_GENERIC_FIXMAP_H */
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
#define DATA_MAIN .data .data.[0-9a-zA-Z_]* .data..L* .data..compoundliteral* .data.$__unnamed_* .data.$L* #define DATA_MAIN .data .data.[0-9a-zA-Z_]* .data..L* .data..compoundliteral* .data.$__unnamed_* .data.$L*
#define SDATA_MAIN .sdata .sdata.[0-9a-zA-Z_]* #define SDATA_MAIN .sdata .sdata.[0-9a-zA-Z_]*
#define RODATA_MAIN .rodata .rodata.[0-9a-zA-Z_]* .rodata..L* #define RODATA_MAIN .rodata .rodata.[0-9a-zA-Z_]* .rodata..L*
#define BSS_MAIN .bss .bss.[0-9a-zA-Z_]* .bss..compoundliteral* #define BSS_MAIN .bss .bss.[0-9a-zA-Z_]* .bss..L* .bss..compoundliteral*
#define SBSS_MAIN .sbss .sbss.[0-9a-zA-Z_]* #define SBSS_MAIN .sbss .sbss.[0-9a-zA-Z_]*
#else #else
#define TEXT_MAIN .text #define TEXT_MAIN .text
......
...@@ -776,12 +776,8 @@ __SYSCALL(__NR_fsmount, sys_fsmount) ...@@ -776,12 +776,8 @@ __SYSCALL(__NR_fsmount, sys_fsmount)
__SYSCALL(__NR_fspick, sys_fspick) __SYSCALL(__NR_fspick, sys_fspick)
#define __NR_pidfd_open 434 #define __NR_pidfd_open 434
__SYSCALL(__NR_pidfd_open, sys_pidfd_open) __SYSCALL(__NR_pidfd_open, sys_pidfd_open)
#ifdef __ARCH_WANT_SYS_CLONE3
#define __NR_clone3 435 #define __NR_clone3 435
__SYSCALL(__NR_clone3, sys_clone3) __SYSCALL(__NR_clone3, sys_clone3)
#endif
#define __NR_close_range 436 #define __NR_close_range 436
__SYSCALL(__NR_close_range, sys_close_range) __SYSCALL(__NR_close_range, sys_close_range)
#define __NR_openat2 437 #define __NR_openat2 437
......
...@@ -2941,8 +2941,6 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, ...@@ -2941,8 +2941,6 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
} }
#endif #endif
#ifdef __ARCH_WANT_SYS_CLONE3
noinline static int copy_clone_args_from_user(struct kernel_clone_args *kargs, noinline static int copy_clone_args_from_user(struct kernel_clone_args *kargs,
struct clone_args __user *uargs, struct clone_args __user *uargs,
size_t usize) size_t usize)
...@@ -3086,6 +3084,11 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size) ...@@ -3086,6 +3084,11 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size)
struct kernel_clone_args kargs; struct kernel_clone_args kargs;
pid_t set_tid[MAX_PID_NS_LEVEL]; pid_t set_tid[MAX_PID_NS_LEVEL];
#ifdef __ARCH_BROKEN_SYS_CLONE3
#warning clone3() entry point is missing, please fix
return -ENOSYS;
#endif
kargs.set_tid = set_tid; kargs.set_tid = set_tid;
err = copy_clone_args_from_user(&kargs, uargs, size); err = copy_clone_args_from_user(&kargs, uargs, size);
...@@ -3097,7 +3100,6 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size) ...@@ -3097,7 +3100,6 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size)
return kernel_clone(&kargs); return kernel_clone(&kargs);
} }
#endif
void walk_process_tree(struct task_struct *top, proc_visitor visitor, void *data) void walk_process_tree(struct task_struct *top, proc_visitor visitor, void *data)
{ {
......
...@@ -76,8 +76,6 @@ COND_SYSCALL(timerfd_gettime32); ...@@ -76,8 +76,6 @@ COND_SYSCALL(timerfd_gettime32);
COND_SYSCALL(acct); COND_SYSCALL(acct);
COND_SYSCALL(capget); COND_SYSCALL(capget);
COND_SYSCALL(capset); COND_SYSCALL(capset);
/* __ARCH_WANT_SYS_CLONE3 */
COND_SYSCALL(clone3);
COND_SYSCALL(futex); COND_SYSCALL(futex);
COND_SYSCALL(futex_time32); COND_SYSCALL(futex_time32);
COND_SYSCALL(set_robust_list); COND_SYSCALL(set_robust_list);
......
...@@ -2,18 +2,32 @@ ...@@ -2,18 +2,32 @@
# include/asm-generic contains a lot of files that are used # include/asm-generic contains a lot of files that are used
# verbatim by several architectures. # verbatim by several architectures.
# #
# This Makefile reads the file arch/$(SRCARCH)/include/(uapi/)/asm/Kbuild # This Makefile generates arch/$(SRCARCH)/include/generated/(uapi/)/asm
# and for each file listed in this file with generic-y creates # headers from multiple sources:
# a small wrapper file in arch/$(SRCARCH)/include/generated/(uapi/)/asm. # - a small wrapper to include the corresponding asm-generic/*.h
# is generated for each file listed as generic-y
# - uapi/asm/unistd_*.h files listed as syscalls-y are generated from
# syscall.tbl with the __NR_* macros
# - Corresponding asm/syscall_table_*.h are generated from the same input
PHONY := all PHONY := all
all: all:
src := $(srctree)/$(subst /generated,,$(obj)) src := $(srctree)/$(subst /generated,,$(obj))
syscall_abis_32 += common,32
syscall_abis_64 += common,64
syscalltbl := $(srctree)/scripts/syscall.tbl
syshdr-args := --emit-nr
# let architectures override $(syscall_abis_%) and $(syscalltbl)
-include $(srctree)/arch/$(SRCARCH)/kernel/Makefile.syscalls
include $(srctree)/scripts/Kbuild.include include $(srctree)/scripts/Kbuild.include
-include $(kbuild-file) -include $(kbuild-file)
syshdr := $(srctree)/scripts/syscallhdr.sh
systbl := $(srctree)/scripts/syscalltbl.sh
# $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case. # $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case.
ifneq ($(SRCARCH),um) ifneq ($(SRCARCH),um)
include $(srctree)/$(generic)/Kbuild include $(srctree)/$(generic)/Kbuild
...@@ -30,11 +44,12 @@ mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) ...@@ -30,11 +44,12 @@ mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(src)/$(f)),,$(f))) generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(src)/$(f)),,$(f)))
generic-y := $(addprefix $(obj)/, $(generic-y)) generic-y := $(addprefix $(obj)/, $(generic-y))
syscall-y := $(addprefix $(obj)/, $(syscall-y))
generated-y := $(addprefix $(obj)/, $(generated-y)) generated-y := $(addprefix $(obj)/, $(generated-y))
# Remove stale wrappers when the corresponding files are removed from generic-y # Remove stale wrappers when the corresponding files are removed from generic-y
old-headers := $(wildcard $(obj)/*.h) old-headers := $(wildcard $(obj)/*.h)
unwanted := $(filter-out $(generic-y) $(generated-y),$(old-headers)) unwanted := $(filter-out $(generic-y) $(generated-y) $(syscall-y),$(old-headers))
quiet_cmd_wrap = WRAP $@ quiet_cmd_wrap = WRAP $@
cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@ cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@
...@@ -42,17 +57,42 @@ quiet_cmd_wrap = WRAP $@ ...@@ -42,17 +57,42 @@ quiet_cmd_wrap = WRAP $@
quiet_cmd_remove = REMOVE $(unwanted) quiet_cmd_remove = REMOVE $(unwanted)
cmd_remove = rm -f $(unwanted) cmd_remove = rm -f $(unwanted)
all: $(generic-y) quiet_cmd_syshdr = SYSHDR $@
cmd_syshdr = $(CONFIG_SHELL) $(syshdr) \
$(if $(syshdr-args-$*),$(syshdr-args-$*),$(syshdr-args)) \
$(if $(syscall_compat),--prefix "compat$*_") \
--abis $(subst $(space),$(comma),$(strip $(syscall_abis_$*))) \
$< $@
quiet_cmd_systbl = SYSTBL $@
cmd_systbl = $(CONFIG_SHELL) $(systbl) \
$(if $(systbl-args-$*),$(systbl-args-$*),$(systbl-args)) \
--abis $(subst $(space),$(comma),$(strip $(syscall_abis_$*))) \
$< $@
all: $(generic-y) $(syscall-y)
$(if $(unwanted),$(call cmd,remove)) $(if $(unwanted),$(call cmd,remove))
@: @:
$(obj)/%.h: $(obj)/%.h: $(srctree)/$(generic)/%.h
$(call cmd,wrap) $(call cmd,wrap)
$(obj)/unistd_%.h: $(syscalltbl) $(syshdr) FORCE
$(call if_changed,syshdr)
$(obj)/unistd_compat_%.h: syscall_compat:=1
$(obj)/unistd_compat_%.h: $(syscalltbl) $(syshdr) FORCE
$(call if_changed,syshdr)
$(obj)/syscall_table_%.h: $(syscalltbl) $(systbl) FORCE
$(call if_changed,systbl)
# Create output directory. Skip it if at least one old header exists # Create output directory. Skip it if at least one old header exists
# since we know the output directory already exists. # since we know the output directory already exists.
ifeq ($(old-headers),) ifeq ($(old-headers),)
$(shell mkdir -p $(obj)) $(shell mkdir -p $(obj))
endif endif
FORCE:
.PHONY: $(PHONY) .PHONY: $(PHONY)
This diff is collapsed.
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#define __ARCH_WANT_NEW_STAT #define __ARCH_WANT_NEW_STAT
#define __ARCH_WANT_SET_GET_RLIMIT #define __ARCH_WANT_SET_GET_RLIMIT
#define __ARCH_WANT_TIME32_SYSCALLS #define __ARCH_WANT_TIME32_SYSCALLS
#define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_MEMFD_SECRET #define __ARCH_WANT_MEMFD_SECRET
#include <asm-generic/unistd.h> #include <asm-generic/unistd.h>
...@@ -4,6 +4,5 @@ ...@@ -4,6 +4,5 @@
*/ */
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_CLONE3
#include <asm-generic/unistd.h> #include <asm-generic/unistd.h>
...@@ -776,12 +776,8 @@ __SYSCALL(__NR_fsmount, sys_fsmount) ...@@ -776,12 +776,8 @@ __SYSCALL(__NR_fsmount, sys_fsmount)
__SYSCALL(__NR_fspick, sys_fspick) __SYSCALL(__NR_fspick, sys_fspick)
#define __NR_pidfd_open 434 #define __NR_pidfd_open 434
__SYSCALL(__NR_pidfd_open, sys_pidfd_open) __SYSCALL(__NR_pidfd_open, sys_pidfd_open)
#ifdef __ARCH_WANT_SYS_CLONE3
#define __NR_clone3 435 #define __NR_clone3 435
__SYSCALL(__NR_clone3, sys_clone3) __SYSCALL(__NR_clone3, sys_clone3)
#endif
#define __NR_close_range 436 #define __NR_close_range 436
__SYSCALL(__NR_close_range, sys_close_range) __SYSCALL(__NR_close_range, sys_close_range)
#define __NR_openat2 437 #define __NR_openat2 437
......
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