瀏覽代碼

[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>
Chris Zankel 18 年之前
父節點
當前提交
bc671aa983
共有 3 個文件被更改,包括 8 次插入1 次删除
  1. 5 0
      arch/xtensa/kernel/syscall.c
  2. 2 0
      include/asm-xtensa/syscall.h
  3. 1 1
      include/asm-xtensa/unistd.h

+ 5 - 0
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);
+}
+

+ 2 - 0
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;

+ 1 - 1
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