diff options
| author | Chris Zankel <chris@zankel.net> | 2007-08-05 13:22:58 -0400 |
|---|---|---|
| committer | Chris Zankel <chris@zankel.net> | 2007-08-27 16:53:32 -0400 |
| commit | bc671aa9838f234ccfc794a77325628f1e41e083 (patch) | |
| tree | 7a94178df1f3cbe87458c3cb5329548187fbb8ad | |
| parent | 068732d9b465cafcc56a745c3931f2fc4e58f48f (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.c | 5 | ||||
| -rw-r--r-- | include/asm-xtensa/syscall.h | 2 | ||||
| -rw-r--r-- | include/asm-xtensa/unistd.h | 2 |
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 | ||
| 96 | asmlinkage 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); |
| 30 | asmlinkage long xtensa_shmat(int, char __user *, int); | 30 | asmlinkage long xtensa_shmat(int, char __user *, int); |
| 31 | asmlinkage 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 */ |
| 33 | struct pollfd; | 35 | 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) | |||
| 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 |
