avr32: fix sys_sync_file_range() call convention
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 patch adds a stub for sync_file_range syscall on AVR32 architecture. Tested with uClibc snapshot. Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com> Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
This commit is contained in:
parent
e37925ebdb
commit
73d4393d1d
2 changed files with 10 additions and 1 deletions
|
@ -109,3 +109,12 @@ __sys_epoll_pwait:
|
||||||
rcall sys_epoll_pwait
|
rcall sys_epoll_pwait
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
.global __sys_sync_file_range
|
||||||
|
.type __sys_sync_file_range,@function
|
||||||
|
__sys_sync_file_range:
|
||||||
|
pushm lr
|
||||||
|
st.w --sp, ARG6
|
||||||
|
rcall sys_sync_file_range
|
||||||
|
sub sp, -4
|
||||||
|
popm pc
|
||||||
|
|
|
@ -275,7 +275,7 @@ sys_call_table:
|
||||||
.long sys_set_robust_list
|
.long sys_set_robust_list
|
||||||
.long sys_get_robust_list /* 260 */
|
.long sys_get_robust_list /* 260 */
|
||||||
.long __sys_splice
|
.long __sys_splice
|
||||||
.long sys_sync_file_range
|
.long __sys_sync_file_range
|
||||||
.long sys_tee
|
.long sys_tee
|
||||||
.long sys_vmsplice
|
.long sys_vmsplice
|
||||||
.long __sys_epoll_pwait /* 265 */
|
.long __sys_epoll_pwait /* 265 */
|
||||||
|
|
Loading…
Reference in a new issue