aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Zankel <chris@zankel.net>2007-08-05 13:22:58 -0400
committerChris Zankel <chris@zankel.net>2007-08-27 16:53:32 -0400
commitbc671aa9838f234ccfc794a77325628f1e41e083 (patch)
tree7a94178df1f3cbe87458c3cb5329548187fbb8ad
parent068732d9b465cafcc56a745c3931f2fc4e58f48f (diff)
[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 <chris@zankel.net>
-rw-r--r--arch/xtensa/kernel/syscall.c5
-rw-r--r--include/asm-xtensa/syscall.h2
-rw-r--r--include/asm-xtensa/unistd.h2
3 files changed, 8 insertions, 1 deletions
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)
93 return (long)ret; 93 return (long)ret;
94} 94}
95 95
96asmlinkage long xtensa_fadvise64_64(int fd, int advice, unsigned long long offset, unsigned long long len)
97{
98 return sys_fadvise64_64(fd, offset, len, advice);
99}
100
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,
28 struct sigaction __user *, 28 struct sigaction __user *,
29 size_t); 29 size_t);
30asmlinkage long xtensa_shmat(int, char __user *, int); 30asmlinkage long xtensa_shmat(int, char __user *, int);
31asmlinkage long xtensa_fadvise64_64(int, int,
32 unsigned long long, unsigned long long);
31 33
32/* Should probably move to linux/syscalls.h */ 34/* Should probably move to linux/syscalls.h */
33struct pollfd; 35struct 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)
151#define __NR_available62 62 151#define __NR_available62 62
152__SYSCALL( 62, sys_ni_syscall, 0) 152__SYSCALL( 62, sys_ni_syscall, 0)
153#define __NR_fadvise64_64 63 153#define __NR_fadvise64_64 63
154__SYSCALL( 63, sys_fadvise64_64, 6) 154__SYSCALL( 63, xtensa_fadvise64_64, 6)
155#define __NR_utime 64 /* glibc 2.3.3 ?? */ 155#define __NR_utime 64 /* glibc 2.3.3 ?? */
156__SYSCALL( 64, sys_utime, 2) 156__SYSCALL( 64, sys_utime, 2)
157#define __NR_utimes 65 157#define __NR_utimes 65