[XTENSA] Fix fadvise64_64
authorChris Zankel <chris@zankel.net>
Sun, 5 Aug 2007 17:22:58 +0000 (10:22 -0700)
committerChris Zankel <chris@zankel.net>
Mon, 27 Aug 2007 20:53:32 +0000 (13:53 -0700)
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>
arch/xtensa/kernel/syscall.c
include/asm-xtensa/syscall.h
include/asm-xtensa/unistd.h

index fe3834b..f3e16ef 100644 (file)
@@ -93,3 +93,8 @@ asmlinkage long xtensa_shmat(int shmid, char __user *shmaddr, int shmflg)
        return (long)ret;
 }
 
        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);
+}
+
index ea9b513..05cebf8 100644 (file)
@@ -28,6 +28,8 @@ asmlinkage long sys_rt_sigaction(int,
                                 struct sigaction __user *,
                                 size_t);
 asmlinkage long xtensa_shmat(int, char __user *, 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;
 
 /* Should probably move to linux/syscalls.h */
 struct pollfd;
index bed0410..92968aa 100644 (file)
@@ -151,7 +151,7 @@ __SYSCALL( 61, sys_fcntl64, 3)
 #define __NR_available62                        62
 __SYSCALL( 62, sys_ni_syscall, 0)
 #define __NR_fadvise64_64                       63
 #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
 #define __NR_utime                              64     /* glibc 2.3.3 ?? */
 __SYSCALL( 64, sys_utime, 2)
 #define __NR_utimes                             65