提交 b4fe19f7 编写于 作者: L Linus Torvalds

Merge tag 'arm64-uapi' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64

Pull arm64 uapi disintegration from Catalin Marinas:
 "UAPI headers for arm64 together with some clean-up to make it
  possible:
   - Do not export the COMPAT_* definitions to user
   - Simplify the compat unistd32.h definitions and remove the
     __SYSCALL_COMPAT guard
   - Disintegrate the arch/arm64/include/asm/* headers"

* tag 'arm64-uapi' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
  UAPI: (Scripted) Disintegrate arch/arm64/include/asm
  arm64: Do not export the compat-specific definitions to the user
  arm64: Do not include asm/unistd32.h in asm/unistd.h
  arm64: Remove unused definitions from asm/unistd32.h
include include/asm-generic/Kbuild.asm
header-y += hwcap.h
generic-y += bug.h
generic-y += bugs.h
......
......@@ -16,11 +16,7 @@
#ifndef __ASM_HWCAP_H
#define __ASM_HWCAP_H
/*
* HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
*/
#define HWCAP_FP (1 << 0)
#define HWCAP_ASIMD (1 << 1)
#include <uapi/asm/hwcap.h>
#define COMPAT_HWCAP_HALF (1 << 1)
#define COMPAT_HWCAP_THUMB (1 << 2)
......@@ -35,7 +31,6 @@
#define COMPAT_HWCAP_IDIVT (1 << 18)
#define COMPAT_HWCAP_IDIV (COMPAT_HWCAP_IDIVA|COMPAT_HWCAP_IDIVT)
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
/*
* This yields a mask that user programs can use to figure out what
......@@ -51,5 +46,3 @@
extern unsigned int elf_hwcap;
#endif
#endif
#endif
......@@ -19,9 +19,7 @@
#ifndef __ASM_PTRACE_H
#define __ASM_PTRACE_H
#include <linux/types.h>
#include <asm/hwcap.h>
#include <uapi/asm/ptrace.h>
/* AArch32-specific ptrace requests */
#define COMPAT_PTRACE_GETREGS 12
......@@ -32,80 +30,18 @@
#define COMPAT_PTRACE_SETVFPREGS 28
#define COMPAT_PTRACE_GETHBPREGS 29
#define COMPAT_PTRACE_SETHBPREGS 30
/*
* PSR bits
*/
#define PSR_MODE_EL0t 0x00000000
#define PSR_MODE_EL1t 0x00000004
#define PSR_MODE_EL1h 0x00000005
#define PSR_MODE_EL2t 0x00000008
#define PSR_MODE_EL2h 0x00000009
#define PSR_MODE_EL3t 0x0000000c
#define PSR_MODE_EL3h 0x0000000d
#define PSR_MODE_MASK 0x0000000f
/* AArch32 CPSR bits */
#define PSR_MODE32_BIT 0x00000010
#define COMPAT_PSR_MODE_USR 0x00000010
#define COMPAT_PSR_T_BIT 0x00000020
#define COMPAT_PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */
/* AArch64 SPSR bits */
#define PSR_F_BIT 0x00000040
#define PSR_I_BIT 0x00000080
#define PSR_A_BIT 0x00000100
#define PSR_D_BIT 0x00000200
#define PSR_Q_BIT 0x08000000
#define PSR_V_BIT 0x10000000
#define PSR_C_BIT 0x20000000
#define PSR_Z_BIT 0x40000000
#define PSR_N_BIT 0x80000000
/*
* Groups of PSR bits
*/
#define PSR_f 0xff000000 /* Flags */
#define PSR_s 0x00ff0000 /* Status */
#define PSR_x 0x0000ff00 /* Extension */
#define PSR_c 0x000000ff /* Control */
/*
* These are 'magic' values for PTRACE_PEEKUSR that return info about where a
* process is located in memory.
*/
#define PT_TEXT_ADDR 0x10000
#define PT_DATA_ADDR 0x10004
#define PT_TEXT_END_ADDR 0x10008
#define COMPAT_PT_TEXT_ADDR 0x10000
#define COMPAT_PT_DATA_ADDR 0x10004
#define COMPAT_PT_TEXT_END_ADDR 0x10008
#ifndef __ASSEMBLY__
/*
* User structures for general purpose, floating point and debug registers.
*/
struct user_pt_regs {
__u64 regs[31];
__u64 sp;
__u64 pc;
__u64 pstate;
};
struct user_fpsimd_state {
__uint128_t vregs[32];
__u32 fpsr;
__u32 fpcr;
};
struct user_hwdebug_state {
__u32 dbg_info;
struct {
__u64 addr;
__u32 ctrl;
} dbg_regs[16];
};
#ifdef __KERNEL__
/* sizeof(struct user) for AArch32 */
#define COMPAT_USER_SZ 296
/* AArch32 uses x13 as the stack pointer... */
......@@ -200,8 +136,5 @@ extern unsigned long profile_pc(struct pt_regs *regs);
extern int aarch32_break_trap(struct pt_regs *regs);
#endif /* __KERNEL__ */
#endif /* __ASSEMBLY__ */
#endif
......@@ -16,44 +16,8 @@
#ifndef __ASM_SIGCONTEXT_H
#define __ASM_SIGCONTEXT_H
#include <linux/types.h>
#include <uapi/asm/sigcontext.h>
/*
* Signal context structure - contains all info to do with the state
* before the signal handler was invoked.
*/
struct sigcontext {
__u64 fault_address;
/* AArch64 registers */
__u64 regs[31];
__u64 sp;
__u64 pc;
__u64 pstate;
/* 4K reserved for FP/SIMD state and future expansion */
__u8 __reserved[4096] __attribute__((__aligned__(16)));
};
/*
* Header to be used at the beginning of structures extending the user
* context. Such structures must be placed after the rt_sigframe on the stack
* and be 16-byte aligned. The last structure must be a dummy one with the
* magic and size set to 0.
*/
struct _aarch64_ctx {
__u32 magic;
__u32 size;
};
#define FPSIMD_MAGIC 0x46508001
struct fpsimd_context {
struct _aarch64_ctx head;
__u32 fpsr;
__u32 fpcr;
__uint128_t vregs[32];
};
#ifdef __KERNEL__
/*
* Auxiliary context saved in the sigcontext.__reserved array. Not exported to
* user space as it will change with the addition of new context. User space
......@@ -65,5 +29,3 @@ struct aux_context {
struct _aarch64_ctx end;
};
#endif
#endif
......@@ -16,9 +16,8 @@
#ifndef __ASM_STAT_H
#define __ASM_STAT_H
#include <asm-generic/stat.h>
#include <uapi/asm/stat.h>
#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
#include <asm/compat.h>
......@@ -60,5 +59,3 @@ struct stat64 {
#endif
#endif
#endif
......@@ -13,13 +13,17 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SYSCALL_COMPAT
#include <asm-generic/unistd.h>
#endif
#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
#include <asm/unistd32.h>
#endif
#define __ARCH_WANT_COMPAT_IPC_PARSE_VERSION
#define __ARCH_WANT_COMPAT_STAT64
#define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_PAUSE
#define __ARCH_WANT_SYS_GETPGRP
#define __ARCH_WANT_SYS_LLSEEK
#define __ARCH_WANT_SYS_NICE
#define __ARCH_WANT_SYS_SIGPENDING
#define __ARCH_WANT_SYS_SIGPROCMASK
#define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_COMPAT_SYS_SENDFILE
#endif
#include <uapi/asm/unistd.h>
此差异已折叠。
# UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm
header-y += auxvec.h
header-y += bitsperlong.h
header-y += byteorder.h
header-y += fcntl.h
header-y += hwcap.h
header-y += param.h
header-y += ptrace.h
header-y += setup.h
header-y += sigcontext.h
header-y += siginfo.h
header-y += signal.h
header-y += stat.h
header-y += statfs.h
header-y += unistd.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/>.
*/
#ifndef _UAPI__ASM_HWCAP_H
#define _UAPI__ASM_HWCAP_H
/*
* HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
*/
#define HWCAP_FP (1 << 0)
#define HWCAP_ASIMD (1 << 1)
#endif /* _UAPI__ASM_HWCAP_H */
/*
* Based on arch/arm/include/asm/ptrace.h
*
* Copyright (C) 1996-2003 Russell King
* 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/>.
*/
#ifndef _UAPI__ASM_PTRACE_H
#define _UAPI__ASM_PTRACE_H
#include <linux/types.h>
#include <asm/hwcap.h>
/*
* PSR bits
*/
#define PSR_MODE_EL0t 0x00000000
#define PSR_MODE_EL1t 0x00000004
#define PSR_MODE_EL1h 0x00000005
#define PSR_MODE_EL2t 0x00000008
#define PSR_MODE_EL2h 0x00000009
#define PSR_MODE_EL3t 0x0000000c
#define PSR_MODE_EL3h 0x0000000d
#define PSR_MODE_MASK 0x0000000f
/* AArch32 CPSR bits */
#define PSR_MODE32_BIT 0x00000010
/* AArch64 SPSR bits */
#define PSR_F_BIT 0x00000040
#define PSR_I_BIT 0x00000080
#define PSR_A_BIT 0x00000100
#define PSR_D_BIT 0x00000200
#define PSR_Q_BIT 0x08000000
#define PSR_V_BIT 0x10000000
#define PSR_C_BIT 0x20000000
#define PSR_Z_BIT 0x40000000
#define PSR_N_BIT 0x80000000
/*
* Groups of PSR bits
*/
#define PSR_f 0xff000000 /* Flags */
#define PSR_s 0x00ff0000 /* Status */
#define PSR_x 0x0000ff00 /* Extension */
#define PSR_c 0x000000ff /* Control */
#ifndef __ASSEMBLY__
/*
* User structures for general purpose, floating point and debug registers.
*/
struct user_pt_regs {
__u64 regs[31];
__u64 sp;
__u64 pc;
__u64 pstate;
};
struct user_fpsimd_state {
__uint128_t vregs[32];
__u32 fpsr;
__u32 fpcr;
};
struct user_hwdebug_state {
__u32 dbg_info;
struct {
__u64 addr;
__u32 ctrl;
} dbg_regs[16];
};
#endif /* __ASSEMBLY__ */
#endif /* _UAPI__ASM_PTRACE_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/>.
*/
#ifndef _UAPI__ASM_SIGCONTEXT_H
#define _UAPI__ASM_SIGCONTEXT_H
#include <linux/types.h>
/*
* Signal context structure - contains all info to do with the state
* before the signal handler was invoked.
*/
struct sigcontext {
__u64 fault_address;
/* AArch64 registers */
__u64 regs[31];
__u64 sp;
__u64 pc;
__u64 pstate;
/* 4K reserved for FP/SIMD state and future expansion */
__u8 __reserved[4096] __attribute__((__aligned__(16)));
};
/*
* Header to be used at the beginning of structures extending the user
* context. Such structures must be placed after the rt_sigframe on the stack
* and be 16-byte aligned. The last structure must be a dummy one with the
* magic and size set to 0.
*/
struct _aarch64_ctx {
__u32 magic;
__u32 size;
};
#define FPSIMD_MAGIC 0x46508001
struct fpsimd_context {
struct _aarch64_ctx head;
__u32 fpsr;
__u32 fpcr;
__uint128_t vregs[32];
};
#endif /* _UAPI__ASM_SIGCONTEXT_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/>.
*/
#include <asm-generic/stat.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/>.
*/
#include <asm-generic/unistd.h>
......@@ -26,6 +26,7 @@
#include <asm/errno.h>
#include <asm/thread_info.h>
#include <asm/unistd.h>
#include <asm/unistd32.h>
/*
* Bad Abort numbers
......
......@@ -823,11 +823,11 @@ static int compat_ptrace_read_user(struct task_struct *tsk, compat_ulong_t off,
if (off & 3)
return -EIO;
if (off == PT_TEXT_ADDR)
if (off == COMPAT_PT_TEXT_ADDR)
tmp = tsk->mm->start_code;
else if (off == PT_DATA_ADDR)
else if (off == COMPAT_PT_DATA_ADDR)
tmp = tsk->mm->start_data;
else if (off == PT_TEXT_END_ADDR)
else if (off == COMPAT_PT_TEXT_END_ADDR)
tmp = tsk->mm->end_code;
else if (off < sizeof(compat_elf_gregset_t))
return copy_regset_to_user(tsk, &user_aarch32_view,
......
......@@ -18,8 +18,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define __SYSCALL_COMPAT
#include <linux/compat.h>
#include <linux/signal.h>
#include <linux/syscalls.h>
......@@ -28,7 +26,7 @@
#include <asm/fpsimd.h>
#include <asm/signal32.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
#include <asm/unistd32.h>
struct compat_sigaction {
compat_uptr_t sa_handler;
......@@ -126,19 +124,19 @@ struct compat_rt_sigframe {
* For ARM syscalls, the syscall number has to be loaded into r7.
* We do not support an OABI userspace.
*/
#define MOV_R7_NR_SIGRETURN (0xe3a07000 | __NR_sigreturn)
#define SVC_SYS_SIGRETURN (0xef000000 | __NR_sigreturn)
#define MOV_R7_NR_RT_SIGRETURN (0xe3a07000 | __NR_rt_sigreturn)
#define SVC_SYS_RT_SIGRETURN (0xef000000 | __NR_rt_sigreturn)
#define MOV_R7_NR_SIGRETURN (0xe3a07000 | __NR_compat_sigreturn)
#define SVC_SYS_SIGRETURN (0xef000000 | __NR_compat_sigreturn)
#define MOV_R7_NR_RT_SIGRETURN (0xe3a07000 | __NR_compat_rt_sigreturn)
#define SVC_SYS_RT_SIGRETURN (0xef000000 | __NR_compat_rt_sigreturn)
/*
* For Thumb syscalls, we also pass the syscall number via r7. We therefore
* need two 16-bit instructions.
*/
#define SVC_THUMB_SIGRETURN (((0xdf00 | __NR_sigreturn) << 16) | \
0x2700 | __NR_sigreturn)
#define SVC_THUMB_RT_SIGRETURN (((0xdf00 | __NR_rt_sigreturn) << 16) | \
0x2700 | __NR_rt_sigreturn)
#define SVC_THUMB_SIGRETURN (((0xdf00 | __NR_compat_sigreturn) << 16) | \
0x2700 | __NR_compat_sigreturn)
#define SVC_THUMB_RT_SIGRETURN (((0xdf00 | __NR_compat_rt_sigreturn) << 16) | \
0x2700 | __NR_compat_rt_sigreturn)
const compat_ulong_t aarch32_sigret_code[6] = {
/*
......@@ -819,5 +817,5 @@ asmlinkage int compat_sys_rt_sigqueueinfo(int pid, int sig,
void compat_setup_restart_syscall(struct pt_regs *regs)
{
regs->regs[7] = __NR_restart_syscall;
regs->regs[7] = __NR_compat_restart_syscall;
}
......@@ -147,136 +147,12 @@ compat_sys_fanotify_mark_wrapper:
b sys_fanotify_mark
ENDPROC(compat_sys_fanotify_mark_wrapper)
/*
* Use the compat system call wrappers.
*/
#define sys_fork compat_sys_fork_wrapper
#define sys_open compat_sys_open
#define sys_execve compat_sys_execve_wrapper
#define sys_lseek compat_sys_lseek_wrapper
#define sys_mount compat_sys_mount
#define sys_ptrace compat_sys_ptrace
#define sys_times compat_sys_times
#define sys_ioctl compat_sys_ioctl
#define sys_fcntl compat_sys_fcntl
#define sys_ustat compat_sys_ustat
#define sys_sigaction compat_sys_sigaction
#define sys_sigsuspend compat_sys_sigsuspend
#define sys_sigpending compat_sys_sigpending
#define sys_setrlimit compat_sys_setrlimit
#define sys_getrusage compat_sys_getrusage
#define sys_gettimeofday compat_sys_gettimeofday
#define sys_settimeofday compat_sys_settimeofday
#define sys_statfs compat_sys_statfs
#define sys_fstatfs compat_sys_fstatfs
#define sys_setitimer compat_sys_setitimer
#define sys_getitimer compat_sys_getitimer
#define sys_newstat compat_sys_newstat
#define sys_newlstat compat_sys_newlstat
#define sys_newfstat compat_sys_newfstat
#define sys_wait4 compat_sys_wait4
#define sys_sysinfo compat_sys_sysinfo
#define sys_sigreturn compat_sys_sigreturn_wrapper
#define sys_clone compat_sys_clone_wrapper
#define sys_adjtimex compat_sys_adjtimex
#define sys_sigprocmask compat_sys_sigprocmask
#define sys_getdents compat_sys_getdents
#define sys_select compat_sys_select
#define sys_readv compat_sys_readv
#define sys_writev compat_sys_writev
#define sys_sysctl compat_sys_sysctl
#define sys_sched_rr_get_interval compat_sys_sched_rr_get_interval
#define sys_nanosleep compat_sys_nanosleep
#define sys_rt_sigreturn compat_sys_rt_sigreturn_wrapper
#define sys_rt_sigaction compat_sys_rt_sigaction
#define sys_rt_sigprocmask compat_sys_rt_sigprocmask
#define sys_rt_sigpending compat_sys_rt_sigpending
#define sys_rt_sigtimedwait compat_sys_rt_sigtimedwait
#define sys_rt_sigqueueinfo compat_sys_rt_sigqueueinfo
#define sys_rt_sigsuspend compat_sys_rt_sigsuspend
#define sys_pread64 compat_sys_pread64_wrapper
#define sys_pwrite64 compat_sys_pwrite64_wrapper
#define sys_sigaltstack compat_sys_sigaltstack_wrapper
#define sys_sendfile compat_sys_sendfile
#define sys_vfork compat_sys_vfork_wrapper
#define sys_getrlimit compat_sys_getrlimit
#define sys_mmap2 sys_mmap_pgoff
#define sys_truncate64 compat_sys_truncate64_wrapper
#define sys_ftruncate64 compat_sys_ftruncate64_wrapper
#define sys_getdents64 compat_sys_getdents64
#define sys_fcntl64 compat_sys_fcntl64
#define sys_readahead compat_sys_readahead_wrapper
#define sys_futex compat_sys_futex
#define sys_sched_setaffinity compat_sys_sched_setaffinity
#define sys_sched_getaffinity compat_sys_sched_getaffinity
#define sys_io_setup compat_sys_io_setup
#define sys_io_getevents compat_sys_io_getevents
#define sys_io_submit compat_sys_io_submit
#define sys_lookup_dcookie compat_sys_lookup_dcookie
#define sys_timer_create compat_sys_timer_create
#define sys_timer_settime compat_sys_timer_settime
#define sys_timer_gettime compat_sys_timer_gettime
#define sys_clock_settime compat_sys_clock_settime
#define sys_clock_gettime compat_sys_clock_gettime
#define sys_clock_getres compat_sys_clock_getres
#define sys_clock_nanosleep compat_sys_clock_nanosleep
#define sys_statfs64 compat_sys_statfs64_wrapper
#define sys_fstatfs64 compat_sys_fstatfs64_wrapper
#define sys_utimes compat_sys_utimes
#define sys_fadvise64_64 compat_sys_fadvise64_64_wrapper
#define sys_mq_open compat_sys_mq_open
#define sys_mq_timedsend compat_sys_mq_timedsend
#define sys_mq_timedreceive compat_sys_mq_timedreceive
#define sys_mq_notify compat_sys_mq_notify
#define sys_mq_getsetattr compat_sys_mq_getsetattr
#define sys_waitid compat_sys_waitid
#define sys_recv compat_sys_recv
#define sys_recvfrom compat_sys_recvfrom
#define sys_setsockopt compat_sys_setsockopt
#define sys_getsockopt compat_sys_getsockopt
#define sys_sendmsg compat_sys_sendmsg
#define sys_recvmsg compat_sys_recvmsg
#define sys_semctl compat_sys_semctl
#define sys_msgsnd compat_sys_msgsnd
#define sys_msgrcv compat_sys_msgrcv
#define sys_msgctl compat_sys_msgctl
#define sys_shmat compat_sys_shmat
#define sys_shmctl compat_sys_shmctl
#define sys_keyctl compat_sys_keyctl
#define sys_semtimedop compat_sys_semtimedop
#define sys_mbind compat_sys_mbind
#define sys_get_mempolicy compat_sys_get_mempolicy
#define sys_set_mempolicy compat_sys_set_mempolicy
#define sys_openat compat_sys_openat
#define sys_futimesat compat_sys_futimesat
#define sys_pselect6 compat_sys_pselect6
#define sys_ppoll compat_sys_ppoll
#define sys_set_robust_list compat_sys_set_robust_list
#define sys_get_robust_list compat_sys_get_robust_list
#define sys_sync_file_range2 compat_sys_sync_file_range2_wrapper
#define sys_vmsplice compat_sys_vmsplice
#define sys_move_pages compat_sys_move_pages
#define sys_epoll_pwait compat_sys_epoll_pwait
#define sys_kexec_load compat_sys_kexec_load
#define sys_utimensat compat_sys_utimensat
#define sys_signalfd compat_sys_signalfd
#define sys_fallocate compat_sys_fallocate_wrapper
#define sys_timerfd_settime compat_sys_timerfd_settime
#define sys_timerfd_gettime compat_sys_timerfd_gettime
#define sys_signalfd4 compat_sys_signalfd4
#define sys_preadv compat_sys_preadv
#define sys_pwritev compat_sys_pwritev
#define sys_rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo
#define sys_recvmmsg compat_sys_recvmmsg
#define sys_fanotify_mark compat_sys_fanotify_mark_wrapper
#undef __SYSCALL
#define __SYSCALL(x, y) .quad y // x
#define __SYSCALL_COMPAT
/*
* The system calls table must be 4KB aligned.
*/
.align 12
ENTRY(compat_sys_call_table)
#include <asm/unistd.h>
#include <asm/unistd32.h>
......@@ -18,8 +18,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define __SYSCALL_COMPAT
#include <linux/compat.h>
#include <linux/personality.h>
#include <linux/sched.h>
......@@ -28,7 +26,7 @@
#include <linux/uaccess.h>
#include <asm/cacheflush.h>
#include <asm/unistd.h>
#include <asm/unistd32.h>
asmlinkage int compat_sys_fork(struct pt_regs *regs)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册