avr32: wire up missing syscalls
authorHans-Christian Egtvedt <egtvedt@samfundet.no>
Thu, 25 Dec 2014 18:58:50 +0000 (19:58 +0100)
committerHans-Christian Egtvedt <egtvedt@samfundet.no>
Mon, 9 Feb 2015 14:27:44 +0000 (15:27 +0100)
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>
arch/avr32/include/asm/unistd.h
arch/avr32/include/uapi/asm/unistd.h
arch/avr32/kernel/syscall-stubs.S
arch/avr32/kernel/syscall_table.S

index c1eb080..2011bee 100644 (file)
@@ -10,7 +10,7 @@
 
 #include <uapi/asm/unistd.h>
 
-#define NR_syscalls            284
+#define NR_syscalls            321
 
 /* Old stuff */
 #define __IGNORE_uselib
index 8822bf4..bbe2fba 100644 (file)
 #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
                                /* 222 reserved for tux */
 #define __NR_utimes            223
 #define __NR_fadvise64_64      224
-
 #define __NR_cacheflush                225
 
 #define __NR_vserver           226
 #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
 #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 */
index b5fc927..f9c68fa 100644 (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
index 017a904..c3b593b 100644 (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 */