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 <egtvedt@samfundet.no>
This commit is contained in:
Hans-Christian Egtvedt 2014-12-25 19:58:50 +01:00
parent bfa76d4957
commit f3240c1f6d
4 changed files with 111 additions and 5 deletions

View file

@ -10,7 +10,7 @@
#include <uapi/asm/unistd.h>
#define NR_syscalls 284
#define NR_syscalls 321
/* Old stuff */
#define __IGNORE_uselib

View file

@ -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 */

View file

@ -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

View file

@ -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 */