@@ -2,6 +2,7 @@ config ARM
bool
default y
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
+ select ARCH_HAS_COMPAT_TIME
select ARCH_HAS_ELF_RANDOMIZE
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
select ARCH_HAVE_CUSTOM_GPIO_H
@@ -19,7 +19,7 @@
* This may need to be greater than __NR_last_syscall+1 in order to
* account for the padding in the syscall table
*/
-#define __NR_syscalls (388)
+#define __NR_syscalls (412)
/*
* *NOTE*: This is a ghost syscall private to the kernel. Only the
@@ -28,7 +28,9 @@
*/
#define __ARM_NR_cmpxchg (__ARM_NR_BASE+0x00fff0)
+#ifdef CONFIG_COMPAT_TIME
#define __ARCH_WANT_STAT64
+#endif
#define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_PAUSE
#define __ARCH_WANT_SYS_GETPGRP
@@ -40,11 +42,13 @@
#define __ARCH_WANT_SYS_OLD_SELECT
#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
-#define __ARCH_WANT_SYS_TIME
+#ifdef CONFIG_COMPAT_TIME
+#define __ARCH_WANT_COMPAT_SYS_TIME
#define __ARCH_WANT_SYS_IPC
+#define __ARCH_WANT_SYS_UTIME
+#endif
#define __ARCH_WANT_SYS_OLDUMOUNT
#define __ARCH_WANT_SYS_ALARM
-#define __ARCH_WANT_SYS_UTIME
#define __ARCH_WANT_SYS_OLD_GETRLIMIT
#define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_SYS_SOCKETCALL
@@ -52,6 +56,7 @@
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE
+#define __ARCH_WANT_SYS_NEWFSTATAT
/*
* Unimplemented (or alternatively implemented) syscalls
@@ -414,6 +414,28 @@
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
#define __NR_bpf (__NR_SYSCALL_BASE+386)
#define __NR_execveat (__NR_SYSCALL_BASE+387)
+#define __NR_clock_gettime64 (__NR_SYSCALL_BASE+388)
+#define __NR_clock_settime64 (__NR_SYSCALL_BASE+389)
+#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE+390)
+#define __NR_clock_getres64 (__NR_SYSCALL_BASE+391)
+#define __NR_clock_nanosleep64 (__NR_SYSCALL_BASE+392)
+#define __NR_timer_gettime64 (__NR_SYSCALL_BASE+393)
+#define __NR_timer_settime64 (__NR_SYSCALL_BASE+394)
+#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE+395)
+#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE+396)
+#define __NR_pselect64 (__NR_SYSCALL_BASE+397)
+#define __NR_ppoll64 (__NR_SYSCALL_BASE+398)
+#define __NR_io_getevents64 (__NR_SYSCALL_BASE+399)
+#define __NR_recvmmsg64 (__NR_SYSCALL_BASE+400)
+#define __NR_semtimedop64 (__NR_SYSCALL_BASE+401)
+#define __NR_mq_timedsend64 (__NR_SYSCALL_BASE+402)
+#define __NR_mq_timedreceive64 (__NR_SYSCALL_BASE+403)
+#define __NR_utimensat64 (__NR_SYSCALL_BASE+404)
+#define __NR_newfstat64 (__NR_SYSCALL_BASE+405)
+#define __NR_newfstatat64 (__NR_SYSCALL_BASE+406)
+#define __NR_rt_sigtimedwait64 (__NR_SYSCALL_BASE+407)
+#define __NR_getrusage64 (__NR_SYSCALL_BASE+408)
+#define __NR_waitid64 (__NR_SYSCALL_BASE+409)
/*
* The following SWIs are ARM private.
@@ -22,7 +22,7 @@
/* 10 */ CALL(sys_unlink)
CALL(sys_execve)
CALL(sys_chdir)
- CALL(OBSOLETE(sys_time)) /* used by libc4 */
+ CALL(OBSOLETE(compat_sys_time)) /* used by libc4 */
CALL(sys_mknod)
/* 15 */ CALL(sys_chmod)
CALL(sys_lchown16)
@@ -34,12 +34,12 @@
CALL(OBSOLETE(sys_oldumount)) /* used by libc4 */
CALL(sys_setuid16)
CALL(sys_getuid16)
-/* 25 */ CALL(OBSOLETE(sys_stime))
+/* 25 */ CALL(OBSOLETE(compat_sys_stime))
CALL(sys_ptrace)
CALL(OBSOLETE(sys_alarm)) /* used by libc4 */
CALL(sys_ni_syscall) /* was sys_fstat */
CALL(sys_pause)
-/* 30 */ CALL(OBSOLETE(sys_utime)) /* used by libc4 */
+/* 30 */ CALL(OBSOLETE(compat_sys_utime))/* used by libc4 */
CALL(sys_ni_syscall) /* was sys_stty */
CALL(sys_ni_syscall) /* was sys_getty */
CALL(sys_access)
@@ -86,12 +86,12 @@
CALL(sys_sethostname)
/* 75 */ CALL(sys_setrlimit)
CALL(OBSOLETE(sys_old_getrlimit)) /* used by libc4 */
- CALL(sys_getrusage)
- CALL(sys_gettimeofday)
- CALL(sys_settimeofday)
+ CALL(compat_sys_getrusage)
+ CALL(compat_sys_gettimeofday)
+ CALL(compat_sys_settimeofday)
/* 80 */ CALL(sys_getgroups16)
CALL(sys_setgroups16)
- CALL(OBSOLETE(sys_old_select)) /* used by libc4 */
+ CALL(OBSOLETE(compat_sys_old_select)) /* used by libc4 */
CALL(sys_symlink)
CALL(sys_ni_syscall) /* was sys_lstat */
/* 85 */ CALL(sys_readlink)
@@ -113,17 +113,17 @@
CALL(sys_ni_syscall) /* sys_ioperm */
CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall)))
CALL(sys_syslog)
- CALL(sys_setitimer)
-/* 105 */ CALL(sys_getitimer)
- CALL(sys_newstat)
- CALL(sys_newlstat)
- CALL(sys_newfstat)
+ CALL(compat_sys_setitimer)
+/* 105 */ CALL(compat_sys_getitimer)
+ CALL(compat_sys_newstat)
+ CALL(compat_sys_newlstat)
+ CALL(compat_sys_newfstat)
CALL(sys_ni_syscall) /* was sys_uname */
/* 110 */ CALL(sys_ni_syscall) /* was sys_iopl */
CALL(sys_vhangup)
CALL(sys_ni_syscall)
CALL(OBSOLETE(sys_syscall)) /* call a syscall */
- CALL(sys_wait4)
+ CALL(compat_sys_wait4)
/* 115 */ CALL(sys_swapoff)
CALL(sys_sysinfo)
CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)))
@@ -133,7 +133,7 @@
CALL(sys_setdomainname)
CALL(sys_newuname)
CALL(sys_ni_syscall) /* modify_ldt */
- CALL(sys_adjtimex)
+ CALL(compat_sys_adjtimex)
/* 125 */ CALL(sys_mprotect)
CALL(sys_sigprocmask)
CALL(sys_ni_syscall) /* was sys_create_module */
@@ -151,7 +151,7 @@
CALL(sys_setfsgid16)
/* 140 */ CALL(sys_llseek)
CALL(sys_getdents)
- CALL(sys_select)
+ CALL(compat_sys_select)
CALL(sys_flock)
CALL(sys_msync)
/* 145 */ CALL(sys_readv)
@@ -170,8 +170,8 @@
CALL(sys_sched_yield)
CALL(sys_sched_get_priority_max)
/* 160 */ CALL(sys_sched_get_priority_min)
- CALL(sys_sched_rr_get_interval)
- CALL(sys_nanosleep)
+ CALL(compat_sys_sched_rr_get_interval)
+ CALL(compat_sys_nanosleep)
CALL(sys_mremap)
CALL(sys_setresuid16)
/* 165 */ CALL(sys_getresuid16)
@@ -186,7 +186,7 @@
CALL(sys_rt_sigaction)
/* 175 */ CALL(sys_rt_sigprocmask)
CALL(sys_rt_sigpending)
- CALL(sys_rt_sigtimedwait)
+ CALL(compat_sys_rt_sigtimedwait)
CALL(sys_rt_sigqueueinfo)
CALL(sys_rt_sigsuspend)
/* 180 */ CALL(ABI(sys_pread64, sys_oabi_pread64))
@@ -249,12 +249,12 @@
CALL(sys_fremovexattr)
CALL(sys_tkill)
CALL(sys_sendfile64)
-/* 240 */ CALL(sys_futex)
+/* 240 */ CALL(compat_sys_futex)
CALL(sys_sched_setaffinity)
CALL(sys_sched_getaffinity)
CALL(sys_io_setup)
CALL(sys_io_destroy)
-/* 245 */ CALL(sys_io_getevents)
+/* 245 */ CALL(compat_sys_io_getevents)
CALL(sys_io_submit)
CALL(sys_io_cancel)
CALL(sys_exit_group)
@@ -267,29 +267,29 @@
/* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */
CALL(sys_set_tid_address)
CALL(sys_timer_create)
- CALL(sys_timer_settime)
- CALL(sys_timer_gettime)
+ CALL(compat_sys_timer_settime)
+ CALL(compat_sys_timer_gettime)
/* 260 */ CALL(sys_timer_getoverrun)
CALL(sys_timer_delete)
- CALL(sys_clock_settime)
- CALL(sys_clock_gettime)
- CALL(sys_clock_getres)
-/* 265 */ CALL(sys_clock_nanosleep)
+ CALL(compat_sys_clock_settime)
+ CALL(compat_sys_clock_gettime)
+ CALL(compat_sys_clock_getres)
+/* 265 */ CALL(compat_sys_clock_nanosleep)
CALL(sys_statfs64_wrapper)
CALL(sys_fstatfs64_wrapper)
CALL(sys_tgkill)
- CALL(sys_utimes)
+ CALL(compat_sys_utimes)
/* 270 */ CALL(sys_arm_fadvise64_64)
CALL(sys_pciconfig_iobase)
CALL(sys_pciconfig_read)
CALL(sys_pciconfig_write)
CALL(sys_mq_open)
/* 275 */ CALL(sys_mq_unlink)
- CALL(sys_mq_timedsend)
- CALL(sys_mq_timedreceive)
+ CALL(compat_sys_mq_timedsend)
+ CALL(compat_sys_mq_timedreceive)
CALL(sys_mq_notify)
CALL(sys_mq_getsetattr)
-/* 280 */ CALL(sys_waitid)
+/* 280 */ CALL(compat_sys_waitid)
CALL(sys_socket)
CALL(ABI(sys_bind, sys_oabi_bind))
CALL(ABI(sys_connect, sys_oabi_connect))
@@ -321,7 +321,7 @@
CALL(sys_add_key)
/* 310 */ CALL(sys_request_key)
CALL(sys_keyctl)
- CALL(ABI(sys_semtimedop, sys_oabi_semtimedop))
+ CALL(ABI(compat_sys_semtimedop, sys_oabi_semtimedop))
/* vserver */ CALL(sys_ni_syscall)
CALL(sys_ioprio_set)
/* 315 */ CALL(sys_ioprio_get)
@@ -335,7 +335,7 @@
CALL(sys_mkdirat)
CALL(sys_mknodat)
/* 325 */ CALL(sys_fchownat)
- CALL(sys_futimesat)
+ CALL(compat_sys_futimesat)
CALL(ABI(sys_fstatat64, sys_oabi_fstatat64))
CALL(sys_unlinkat)
CALL(sys_renameat)
@@ -344,8 +344,8 @@
CALL(sys_readlinkat)
CALL(sys_fchmodat)
CALL(sys_faccessat)
-/* 335 */ CALL(sys_pselect6)
- CALL(sys_ppoll)
+/* 335 */ CALL(compat_sys_pselect6)
+ CALL(compat_sys_ppoll)
CALL(sys_unshare)
CALL(sys_set_robust_list)
CALL(sys_get_robust_list)
@@ -357,13 +357,13 @@
/* 345 */ CALL(sys_getcpu)
CALL(sys_epoll_pwait)
CALL(sys_kexec_load)
- CALL(sys_utimensat)
+ CALL(compat_sys_utimensat)
CALL(sys_signalfd)
/* 350 */ CALL(sys_timerfd_create)
CALL(sys_eventfd)
CALL(sys_fallocate)
- CALL(sys_timerfd_settime)
- CALL(sys_timerfd_gettime)
+ CALL(compat_sys_timerfd_settime)
+ CALL(compat_sys_timerfd_gettime)
/* 355 */ CALL(sys_signalfd4)
CALL(sys_eventfd2)
CALL(sys_epoll_create1)
@@ -374,14 +374,14 @@
CALL(sys_pwritev)
CALL(sys_rt_tgsigqueueinfo)
CALL(sys_perf_event_open)
-/* 365 */ CALL(sys_recvmmsg)
+/* 365 */ CALL(compat_sys_recvmmsg)
CALL(sys_accept4)
CALL(sys_fanotify_init)
CALL(sys_fanotify_mark)
CALL(sys_prlimit64)
/* 370 */ CALL(sys_name_to_handle_at)
CALL(sys_open_by_handle_at)
- CALL(sys_clock_adjtime)
+ CALL(compat_sys_clock_adjtime)
CALL(sys_syncfs)
CALL(sys_sendmmsg)
/* 375 */ CALL(sys_setns)
@@ -397,6 +397,29 @@
/* 385 */ CALL(sys_memfd_create)
CALL(sys_bpf)
CALL(sys_execveat)
+ CALL(sys_clock_gettime)
+ CALL(sys_clock_settime)
+/* 390 */ CALL(sys_clock_adjtime)
+ CALL(sys_clock_getres)
+ CALL(sys_clock_nanosleep)
+ CALL(sys_timer_gettime)
+ CALL(sys_timer_settime)
+/* 395 */ CALL(sys_timerfd_gettime)
+ CALL(sys_timerfd_settime)
+ CALL(sys_pselect6)
+ CALL(sys_ppoll)
+ CALL(sys_io_getevents)
+/* 400 */ CALL(sys_recvmmsg)
+ CALL(sys_semtimedop)
+ CALL(sys_mq_timedsend)
+ CALL(sys_mq_timedreceive)
+ CALL(sys_utimensat)
+/* 405 */ CALL(sys_newfstat)
+ CALL(sys_newfstatat)
+ CALL(sys_rt_sigtimedwait)
+ CALL(sys_getrusage)
+ CALL(sys_waitid)
+
#ifndef syscalls_counted
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
#define syscalls_counted
@@ -73,6 +73,7 @@
* wrappers provided below.
*/
+#include <linux/compat_time.h>
#include <linux/syscalls.h>
#include <linux/errno.h>
#include <linux/fs.h>
@@ -307,10 +308,10 @@ struct oabi_sembuf {
asmlinkage long sys_oabi_semtimedop(int semid,
struct oabi_sembuf __user *tsops,
unsigned nsops,
- const struct timespec __user *timeout)
+ const struct compat_timespec __user *timeout)
{
struct sembuf *sops;
- struct timespec local_timeout;
+ struct compat_timespec local_timeout;
long err;
int i;
@@ -336,7 +337,7 @@ asmlinkage long sys_oabi_semtimedop(int semid,
} else {
mm_segment_t fs = get_fs();
set_fs(KERNEL_DS);
- err = sys_semtimedop(semid, sops, nsops, timeout);
+ err = compat_sys_semtimedop(semid, sops, nsops, timeout);
set_fs(fs);
}
kfree(sops);
@@ -361,7 +362,7 @@ asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
return sys_oabi_semtimedop(first,
(struct oabi_sembuf __user *)ptr,
second,
- (const struct timespec __user *)fifth);
+ (const struct compat_timespec __user *)fifth);
default:
return sys_ipc(call, first, second, third, ptr, fifth);
}
@@ -797,3 +797,47 @@ __SYSCALL(__NR_memfd_create, sys_memfd_create)
__SYSCALL(__NR_bpf, sys_bpf)
#define __NR_execveat 387
__SYSCALL(__NR_execveat, compat_sys_execveat)
+#define __NR_clock_gettime64 388
+_SYSCALL(__NR_clock_gettime64, sys_clock_gettime)
+#define __NR_clock_settime64 389
+_SYSCALL(__NR_clock_settime64, sys_clock_settime)
+#define __NR_clock_adjtime64 390
+_SYSCALL(__NR_clock_adjtime64, sys_clock_adjtime)
+#define __NR_clock_getres64 391
+_SYSCALL(__NR_clock_getres64, sys_clock_getres)
+#define __NR_clock_nanosleep64 392
+_SYSCALL(__NR_clock_nanosleep64, sys_clock_nanosleep)
+#define __NR_timer_gettime64 393
+_SYSCALL(__NR_timer_gettime64, sys_timer_gettime)
+#define __NR_timer_settime64 394
+_SYSCALL(__NR_timer_settime64, sys_timer_settime)
+#define __NR_timerfd_gettime64 395
+_SYSCALL(__NR_timerfd_gettime64, sys_timerfd_gettime)
+#define __NR_timerfd_settime64 396
+_SYSCALL(__NR_timerfd_settime64, sys_timerfd_settime)
+#define __NR_pselect64 397
+_SYSCALL(__NR_pselect64, compat_sys_pselect6_time64)
+#define __NR_ppoll64 398
+_SYSCALL(__NR_ppoll64, compat_sys_ppoll_time64)
+#define __NR_io_getevents64 399
+_SYSCALL(__NR_io_getevents64, sys_io_getevents)
+#define __NR_recvmmsg64 400
+_SYSCALL(__NR_recvmmsg64, compat_sys_recvmmsg64)
+#define __NR_semtimedop64 401
+_SYSCALL(__NR_semtimedop64, sys_semtimedop)
+#define __NR_mq_timedsend64 402
+_SYSCALL(__NR_mq_timedsend64, sys_mq_timedsend)
+#define __NR_mq_timedreceive64 403
+_SYSCALL(__NR_mq_timedreceive64, sys_mq_timedreceive)
+#define __NR_utimensat64 404
+_SYSCALL(__NR_utimensat64, sys_utimensat)
+#define __NR_newfstat64 405
+_SYSCALL(__NR_newfstat64, sys_newfstat)
+#define __NR_newfstatat64 406
+_SYSCALL(__NR_newfstatat64, sys_newfstatat)
+#define __NR_rt_sigtimedwait64 407
+_SYSCALL(__NR_rt_sigtimedwait64, compat_sys_rt_sigtimedwait_time64)
+#define __NR_getrusage64 408
+_SYSCALL(__NR_getrusage64, sys_getrusage)
+#define __NR_waitid64 409
+_SYSCALL(__NR_waitid64, compat_sys_waitid_time64)