diff options
author | Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> | 2016-05-29 21:11:53 +0200 |
---|---|---|
committer | Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> | 2016-07-29 11:55:57 +0200 |
commit | 389ce5a9616b5c2ae386a1fde7401762a4ed1b37 (patch) | |
tree | 9f89ef7dad5cdeb7bed996de6b1784b52de397ea /arch/avr32 | |
parent | 523d939ef98fd712632d93a5a2b588e477a7565e (diff) | |
download | linux-389ce5a9616b5c2ae386a1fde7401762a4ed1b37.tar.gz linux-389ce5a9616b5c2ae386a1fde7401762a4ed1b37.tar.bz2 linux-389ce5a9616b5c2ae386a1fde7401762a4ed1b37.zip |
avr32: wire up preadv2 and pwritev2 syscalls
This patch wires up the new preadv2 and pwritev2 syscall on AVR32.
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.
Signed-off-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no>
Diffstat (limited to 'arch/avr32')
-rw-r--r-- | arch/avr32/include/uapi/asm/unistd.h | 2 | ||||
-rw-r--r-- | arch/avr32/kernel/syscall-stubs.S | 18 | ||||
-rw-r--r-- | arch/avr32/kernel/syscall_table.S | 2 |
3 files changed, 22 insertions, 0 deletions
diff --git a/arch/avr32/include/uapi/asm/unistd.h b/arch/avr32/include/uapi/asm/unistd.h index 60c0f3afc1f9..d0c1f6db4b8f 100644 --- a/arch/avr32/include/uapi/asm/unistd.h +++ b/arch/avr32/include/uapi/asm/unistd.h @@ -338,5 +338,7 @@ #define __NR_membarrier 323 #define __NR_mlock2 324 #define __NR_copy_file_range 325 +#define __NR_preadv2 326 +#define __NR_pwritev2 327 #endif /* _UAPI__ASM_AVR32_UNISTD_H */ diff --git a/arch/avr32/kernel/syscall-stubs.S b/arch/avr32/kernel/syscall-stubs.S index cb3991552f14..cb256534ed92 100644 --- a/arch/avr32/kernel/syscall-stubs.S +++ b/arch/avr32/kernel/syscall-stubs.S @@ -133,3 +133,21 @@ __sys_copy_file_range: call sys_copy_file_range sub sp, -4 popm pc + + .global __sys_preadv2 + .type __sys_preadv2,@function +__sys_preadv2: + pushm lr + st.w --sp, ARG6 + call sys_preadv2 + sub sp, -4 + popm pc + + .global __sys_pwritev2 + .type __sys_pwritev2,@function +__sys_pwritev2: + pushm lr + st.w --sp, ARG6 + call sys_pwritev2 + sub sp, -4 + popm pc diff --git a/arch/avr32/kernel/syscall_table.S b/arch/avr32/kernel/syscall_table.S index 64d71a781fa8..0eaf94b7a67c 100644 --- a/arch/avr32/kernel/syscall_table.S +++ b/arch/avr32/kernel/syscall_table.S @@ -339,4 +339,6 @@ sys_call_table: .long sys_membarrier .long sys_mlock2 .long __sys_copy_file_range /* 325 */ + .long __sys_preadv2 + .long __sys_pwritev2 .long sys_ni_syscall /* r8 is saturated at nr_syscalls */ |