aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sparc/kernel/sys32.S28
-rw-r--r--arch/sparc/kernel/sys_sparc32.c26
-rw-r--r--arch/sparc/kernel/systbls.h12
-rw-r--r--arch/sparc/kernel/systbls_64.S4
4 files changed, 18 insertions, 52 deletions
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S
index fba545787f81..489ffab918a8 100644
--- a/arch/sparc/kernel/sys32.S
+++ b/arch/sparc/kernel/sys32.S
@@ -13,34 +13,6 @@
13 13
14 .text 14 .text
15 15
16#define SIGN1(STUB,SYSCALL,REG1) \
17 .align 32; \
18 .globl STUB; \
19STUB: sethi %hi(SYSCALL), %g1; \
20 jmpl %g1 + %lo(SYSCALL), %g0; \
21 sra REG1, 0, REG1
22
23#define SIGN2(STUB,SYSCALL,REG1,REG2) \
24 .align 32; \
25 .globl STUB; \
26STUB: sethi %hi(SYSCALL), %g1; \
27 sra REG1, 0, REG1; \
28 jmpl %g1 + %lo(SYSCALL), %g0; \
29 sra REG2, 0, REG2
30
31#define SIGN3(STUB,SYSCALL,REG1,REG2,REG3) \
32 .align 32; \
33 .globl STUB; \
34STUB: sra REG1, 0, REG1; \
35 sethi %hi(SYSCALL), %g1; \
36 sra REG2, 0, REG2; \
37 jmpl %g1 + %lo(SYSCALL), %g0; \
38 sra REG3, 0, REG3
39
40SIGN1(sys32_readahead, compat_sys_readahead, %o0)
41SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4)
42SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
43
44 .globl sys32_mmap2 16 .globl sys32_mmap2
45sys32_mmap2: 17sys32_mmap2:
46 sethi %hi(sys_mmap), %g1 18 sethi %hi(sys_mmap), %g1
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index 6d964bdefbaa..9b0c569267bf 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -212,30 +212,24 @@ asmlinkage compat_ssize_t sys32_pwrite64(unsigned int fd,
212 return sys_pwrite64(fd, ubuf, count, (poshi << 32) | poslo); 212 return sys_pwrite64(fd, ubuf, count, (poshi << 32) | poslo);
213} 213}
214 214
215asmlinkage long compat_sys_readahead(int fd, 215COMPAT_SYSCALL_DEFINE4(readahead, int, fd, u32, offhi, u32, offlo,
216 unsigned long offhi, 216 compat_size_t, count)
217 unsigned long offlo,
218 compat_size_t count)
219{ 217{
220 return sys_readahead(fd, (offhi << 32) | offlo, count); 218 return sys_readahead(fd, ((u64)offhi << 32) | offlo, count);
221} 219}
222 220
223long compat_sys_fadvise64(int fd, 221COMPAT_SYSCALL_DEFINE5(fadvise64, int, fd, u32, offhi, u32, offlo,
224 unsigned long offhi, 222 compat_size_t, len, int, advice)
225 unsigned long offlo,
226 compat_size_t len, int advice)
227{ 223{
228 return sys_fadvise64_64(fd, (offhi << 32) | offlo, len, advice); 224 return sys_fadvise64_64(fd, ((u64)offhi << 32) | offlo, len, advice);
229} 225}
230 226
231long compat_sys_fadvise64_64(int fd, 227COMPAT_SYSCALL_DEFINE6(fadvise64_64, int, fd, u32, offhi, u32, offlo,
232 unsigned long offhi, unsigned long offlo, 228 u32, lenhi, u32, lenlo, int, advice)
233 unsigned long lenhi, unsigned long lenlo,
234 int advice)
235{ 229{
236 return sys_fadvise64_64(fd, 230 return sys_fadvise64_64(fd,
237 (offhi << 32) | offlo, 231 ((u64)offhi << 32) | offlo,
238 (lenhi << 32) | lenlo, 232 ((u64)lenhi << 32) | lenlo,
239 advice); 233 advice);
240} 234}
241 235
diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h
index 0c9434d980d7..4aca08e3ddef 100644
--- a/arch/sparc/kernel/systbls.h
+++ b/arch/sparc/kernel/systbls.h
@@ -77,16 +77,16 @@ asmlinkage compat_ssize_t sys32_pwrite64(unsigned int fd,
77 unsigned long poshi, 77 unsigned long poshi,
78 unsigned long poslo); 78 unsigned long poslo);
79asmlinkage long compat_sys_readahead(int fd, 79asmlinkage long compat_sys_readahead(int fd,
80 unsigned long offhi, 80 unsigned offhi,
81 unsigned long offlo, 81 unsigned offlo,
82 compat_size_t count); 82 compat_size_t count);
83long compat_sys_fadvise64(int fd, 83long compat_sys_fadvise64(int fd,
84 unsigned long offhi, 84 unsigned offhi,
85 unsigned long offlo, 85 unsigned offlo,
86 compat_size_t len, int advice); 86 compat_size_t len, int advice);
87long compat_sys_fadvise64_64(int fd, 87long compat_sys_fadvise64_64(int fd,
88 unsigned long offhi, unsigned long offlo, 88 unsigned offhi, unsigned offlo,
89 unsigned long lenhi, unsigned long lenlo, 89 unsigned lenhi, unsigned lenlo,
90 int advice); 90 int advice);
91long sys32_sync_file_range(unsigned int fd, 91long sys32_sync_file_range(unsigned int fd,
92 unsigned long off_high, unsigned long off_low, 92 unsigned long off_high, unsigned long off_low,
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index a5c7d23cddf0..96b6b64ce579 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -60,8 +60,8 @@ sys_call_table32:
60/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl 60/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
61 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask 61 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask
62/*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir 62/*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
63 .word sys32_readahead, sys32_socketcall, sys_syslog, compat_sys_lookup_dcookie, sys32_fadvise64 63 .word compat_sys_readahead, sys32_socketcall, sys_syslog, compat_sys_lookup_dcookie, compat_sys_fadvise64
64/*210*/ .word sys32_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo 64/*210*/ .word compat_sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo
65 .word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex 65 .word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex
66/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid 66/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid
67 .word sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16 67 .word sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16