From: Hans-Christian Egtvedt Date: Thu, 25 Dec 2014 18:58:50 +0000 (+0100) Subject: avr32: wire up missing syscalls X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f3240c1f6d18591b2c1ef33ed18d5ca91e62c104;p=linux-beck.git avr32: wire up missing syscalls This patch adds a bunch of missing syscalls to AVR32: __NR_pread64 __NR_pwrite64 __NR_timerfd_create __NR_fallocate __NR_timerfd_settime __NR_timerfd_gettime __NR_signalfd4 __NR_eventfd2 __NR_epoll_create1 __NR_dup3 __NR_pipe2 __NR_inotify_init1 __NR_preadv __NR_pwritev __NR_rt_tgsigqueueinfo __NR_perf_event_open __NR_recvmmsg __NR_fanotify_init __NR_fanotify_mark __NR_prlimit64 __NR_name_to_handle_at __NR_open_by_handle_at __NR_clock_adjtime __NR_syncfs __NR_sendmmsg __NR_process_vm_readv __NR_process_vm_writev __NR_kcmp __NR_finit_module __NR_sched_setattr __NR_sched_getattr __NR_renameat2 __NR_seccomp __NR_getrandom __NR_memfd_create __NR_bpf __NR_execveat On AVR32, all parameters beyond the 5th are passed on the stack. System calls don't use the stack -- they borrow a callee-saved register instead. This means that syscalls that take 6 parameters must be called through a stub that pushes the last parameter on the stack. This relates to syscall fallocate, fanotify_mark, process_vm_readv, and process_vm_writev. Signed-off-by: Hans-Christian Egtvedt --- diff --git a/arch/avr32/include/asm/unistd.h b/arch/avr32/include/asm/unistd.h index c1eb080e45fe..2011bee3f252 100644 --- a/arch/avr32/include/asm/unistd.h +++ b/arch/avr32/include/asm/unistd.h @@ -10,7 +10,7 @@ #include -#define NR_syscalls 284 +#define NR_syscalls 321 /* Old stuff */ #define __IGNORE_uselib diff --git a/arch/avr32/include/uapi/asm/unistd.h b/arch/avr32/include/uapi/asm/unistd.h index 8822bf46ddc6..bbe2fba565cd 100644 --- a/arch/avr32/include/uapi/asm/unistd.h +++ b/arch/avr32/include/uapi/asm/unistd.h @@ -222,7 +222,6 @@ #define __NR_epoll_wait 207 #define __NR_remap_file_pages 208 #define __NR_set_tid_address 209 - #define __NR_timer_create 210 #define __NR_timer_settime 211 #define __NR_timer_gettime 212 @@ -238,7 +237,6 @@ /* 222 reserved for tux */ #define __NR_utimes 223 #define __NR_fadvise64_64 224 - #define __NR_cacheflush 225 #define __NR_vserver 226 @@ -281,7 +279,6 @@ #define __NR_tee 263 #define __NR_vmsplice 264 #define __NR_epoll_pwait 265 - #define __NR_msgget 266 #define __NR_msgsnd 267 #define __NR_msgrcv 268 @@ -294,11 +291,47 @@ #define __NR_shmget 275 #define __NR_shmdt 276 #define __NR_shmctl 277 - #define __NR_utimensat 278 #define __NR_signalfd 279 /* 280 was __NR_timerfd */ #define __NR_eventfd 281 #define __NR_setns 283 +#define __NR_pread64 284 +#define __NR_pwrite64 285 +#define __NR_timerfd_create 286 +#define __NR_fallocate 287 +#define __NR_timerfd_settime 288 +#define __NR_timerfd_gettime 289 +#define __NR_signalfd4 290 +#define __NR_eventfd2 291 +#define __NR_epoll_create1 292 +#define __NR_dup3 293 +#define __NR_pipe2 294 +#define __NR_inotify_init1 295 +#define __NR_preadv 296 +#define __NR_pwritev 297 +#define __NR_rt_tgsigqueueinfo 298 +#define __NR_perf_event_open 299 +#define __NR_recvmmsg 300 +#define __NR_fanotify_init 301 +#define __NR_fanotify_mark 302 +#define __NR_prlimit64 303 +#define __NR_name_to_handle_at 304 +#define __NR_open_by_handle_at 305 +#define __NR_clock_adjtime 306 +#define __NR_syncfs 307 +#define __NR_sendmmsg 308 +#define __NR_process_vm_readv 309 +#define __NR_process_vm_writev 310 +#define __NR_kcmp 311 +#define __NR_finit_module 312 +#define __NR_sched_setattr 313 +#define __NR_sched_getattr 314 +#define __NR_renameat2 315 +#define __NR_seccomp 316 +#define __NR_getrandom 317 +#define __NR_memfd_create 318 +#define __NR_bpf 319 +#define __NR_execveat 320 #endif /* _UAPI__ASM_AVR32_UNISTD_H */ diff --git a/arch/avr32/kernel/syscall-stubs.S b/arch/avr32/kernel/syscall-stubs.S index b5fc927cd398..f9c68fab0e2f 100644 --- a/arch/avr32/kernel/syscall-stubs.S +++ b/arch/avr32/kernel/syscall-stubs.S @@ -88,3 +88,39 @@ __sys_sync_file_range: call sys_sync_file_range sub sp, -4 popm pc + + .global __sys_fallocate + .type __sys_fallocate,@function +__sys_fallocate: + pushm lr + st.w --sp, ARG6 + call sys_fallocate + sub sp, -4 + popm pc + + .global __sys_fanotify_mark + .type __sys_fanotify_mark,@function +__sys_fanotify_mark: + pushm lr + st.w --sp, ARG6 + call sys_fanotify_mark + sub sp, -4 + popm pc + + .global __sys_process_vm_readv + .type __sys_process_vm_readv,@function +__sys_process_vm_readv: + pushm lr + st.w --sp, ARG6 + call sys_process_vm_readv + sub sp, -4 + popm pc + + .global __sys_process_vm_writev + .type __sys_process_vm_writev,@function +__sys_process_vm_writev: + pushm lr + st.w --sp, ARG6 + call sys_process_vm_writev + sub sp, -4 + popm pc diff --git a/arch/avr32/kernel/syscall_table.S b/arch/avr32/kernel/syscall_table.S index 017a904180c8..c3b593bfc3b3 100644 --- a/arch/avr32/kernel/syscall_table.S +++ b/arch/avr32/kernel/syscall_table.S @@ -297,4 +297,41 @@ sys_call_table: .long sys_eventfd .long sys_recvmmsg .long sys_setns + .long sys_pread64 + .long sys_pwrite64 /* 285 */ + .long sys_timerfd_create + .long __sys_fallocate + .long sys_timerfd_settime + .long sys_timerfd_gettime + .long sys_signalfd4 /* 290 */ + .long sys_eventfd2 + .long sys_epoll_create1 + .long sys_dup3 + .long sys_pipe2 + .long sys_inotify_init1 /* 295 */ + .long sys_preadv + .long sys_pwritev + .long sys_rt_tgsigqueueinfo + .long sys_perf_event_open + .long sys_recvmmsg /* 300 */ + .long sys_fanotify_init + .long __sys_fanotify_mark + .long sys_prlimit64 + .long sys_name_to_handle_at + .long sys_open_by_handle_at /* 305 */ + .long sys_clock_adjtime + .long sys_syncfs + .long sys_sendmmsg + .long __sys_process_vm_readv + .long __sys_process_vm_writev /* 310 */ + .long sys_kcmp + .long sys_finit_module + .long sys_sched_setattr + .long sys_sched_getattr + .long sys_renameat2 /* 315 */ + .long sys_seccomp + .long sys_getrandom + .long sys_memfd_create + .long sys_bpf + .long sys_execveat /* 320 */ .long sys_ni_syscall /* r8 is saturated at nr_syscalls */