From bc671aa9838f234ccfc794a77325628f1e41e083 Mon Sep 17 00:00:00 2001 From: Chris Zankel Date: Sun, 5 Aug 2007 10:22:58 -0700 Subject: [PATCH] [XTENSA] Fix fadvise64_64 Xtensa passes long long arguments in a even/odd register pair, so we also need to shuffle the arguments when passed through the system call to avoid an empty argument register. Signed-off-by: Chris Zankel --- arch/xtensa/kernel/syscall.c | 5 +++++ include/asm-xtensa/syscall.h | 2 ++ include/asm-xtensa/unistd.h | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/xtensa/kernel/syscall.c b/arch/xtensa/kernel/syscall.c index fe3834bc1dbf..f3e16efcd47a 100644 --- a/arch/xtensa/kernel/syscall.c +++ b/arch/xtensa/kernel/syscall.c @@ -93,3 +93,8 @@ asmlinkage long xtensa_shmat(int shmid, char __user *shmaddr, int shmflg) return (long)ret; } +asmlinkage long xtensa_fadvise64_64(int fd, int advice, unsigned long long offset, unsigned long long len) +{ + return sys_fadvise64_64(fd, offset, len, advice); +} + diff --git a/include/asm-xtensa/syscall.h b/include/asm-xtensa/syscall.h index ea9b5132215e..05cebf8f62b1 100644 --- a/include/asm-xtensa/syscall.h +++ b/include/asm-xtensa/syscall.h @@ -28,6 +28,8 @@ asmlinkage long sys_rt_sigaction(int, struct sigaction __user *, size_t); asmlinkage long xtensa_shmat(int, char __user *, int); +asmlinkage long xtensa_fadvise64_64(int, int, + unsigned long long, unsigned long long); /* Should probably move to linux/syscalls.h */ struct pollfd; diff --git a/include/asm-xtensa/unistd.h b/include/asm-xtensa/unistd.h index bed04102407b..92968aabe34e 100644 --- a/include/asm-xtensa/unistd.h +++ b/include/asm-xtensa/unistd.h @@ -151,7 +151,7 @@ __SYSCALL( 61, sys_fcntl64, 3) #define __NR_available62 62 __SYSCALL( 62, sys_ni_syscall, 0) #define __NR_fadvise64_64 63 -__SYSCALL( 63, sys_fadvise64_64, 6) +__SYSCALL( 63, xtensa_fadvise64_64, 6) #define __NR_utime 64 /* glibc 2.3.3 ?? */ __SYSCALL( 64, sys_utime, 2) #define __NR_utimes 65