xref: /linux/arch/arm64/kernel/sys32.c (revision 2ba9268dd603d23e17643437b2246acb6844953b)
1 /*
2  * arch/arm64/kernel/sys32.c
3  *
4  * Copyright (C) 2015 ARM Ltd.
5  *
6  * This program is free software(void); you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http(void);//www.gnu.org/licenses/>.
17  */
18 
19 /*
20  * Needed to avoid conflicting __NR_* macros between uapi/asm/unistd.h and
21  * asm/unistd32.h.
22  */
23 #define __COMPAT_SYSCALL_NR
24 
25 #include <linux/compiler.h>
26 #include <linux/syscalls.h>
27 
28 asmlinkage long compat_sys_sigreturn_wrapper(void);
29 asmlinkage long compat_sys_rt_sigreturn_wrapper(void);
30 asmlinkage long compat_sys_statfs64_wrapper(void);
31 asmlinkage long compat_sys_fstatfs64_wrapper(void);
32 asmlinkage long compat_sys_pread64_wrapper(void);
33 asmlinkage long compat_sys_pwrite64_wrapper(void);
34 asmlinkage long compat_sys_truncate64_wrapper(void);
35 asmlinkage long compat_sys_ftruncate64_wrapper(void);
36 asmlinkage long compat_sys_readahead_wrapper(void);
37 asmlinkage long compat_sys_fadvise64_64_wrapper(void);
38 asmlinkage long compat_sys_sync_file_range2_wrapper(void);
39 asmlinkage long compat_sys_fallocate_wrapper(void);
40 
41 #undef __SYSCALL
42 #define __SYSCALL(nr, sym)	[nr] = sym,
43 
44 /*
45  * The sys_call_table array must be 4K aligned to be accessible from
46  * kernel/entry.S.
47  */
48 void * const compat_sys_call_table[__NR_compat_syscalls] __aligned(4096) = {
49 	[0 ... __NR_compat_syscalls - 1] = sys_ni_syscall,
50 #include <asm/unistd32.h>
51 };
52