diff options
Diffstat (limited to 'arch/sparc/kernel')
-rw-r--r-- | arch/sparc/kernel/entry.S | 8 | ||||
-rw-r--r-- | arch/sparc/kernel/signal32.c | 48 | ||||
-rw-r--r-- | arch/sparc/kernel/signal_32.c | 29 | ||||
-rw-r--r-- | arch/sparc/kernel/signal_64.c | 24 | ||||
-rw-r--r-- | arch/sparc/kernel/sys32.S | 86 | ||||
-rw-r--r-- | arch/sparc/kernel/sys_sparc32.c | 185 | ||||
-rw-r--r-- | arch/sparc/kernel/sys_sparc_32.c | 37 | ||||
-rw-r--r-- | arch/sparc/kernel/syscalls.S | 6 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls.h | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_32.S | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_64.S | 84 |
11 files changed, 67 insertions, 444 deletions
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S index 21fd1a8f47d2..e2a030045089 100644 --- a/arch/sparc/kernel/entry.S +++ b/arch/sparc/kernel/entry.S | |||
@@ -820,14 +820,6 @@ sys_sparc_pipe: | |||
820 | mov %l5, %o7 | 820 | mov %l5, %o7 |
821 | 821 | ||
822 | .align 4 | 822 | .align 4 |
823 | .globl sys_sigaltstack | ||
824 | sys_sigaltstack: | ||
825 | mov %o7, %l5 | ||
826 | mov %fp, %o2 | ||
827 | call do_sigaltstack | ||
828 | mov %l5, %o7 | ||
829 | |||
830 | .align 4 | ||
831 | .globl sys_sigstack | 823 | .globl sys_sigstack |
832 | sys_sigstack: | 824 | sys_sigstack: |
833 | mov %o7, %l5 | 825 | mov %o7, %l5 |
diff --git a/arch/sparc/kernel/signal32.c b/arch/sparc/kernel/signal32.c index 53e48f721ce3..9d9eb91d0de1 100644 --- a/arch/sparc/kernel/signal32.c +++ b/arch/sparc/kernel/signal32.c | |||
@@ -61,7 +61,7 @@ struct rt_signal_frame32 { | |||
61 | compat_sigset_t mask; | 61 | compat_sigset_t mask; |
62 | /* __siginfo_fpu_t * */ u32 fpu_save; | 62 | /* __siginfo_fpu_t * */ u32 fpu_save; |
63 | unsigned int insns[2]; | 63 | unsigned int insns[2]; |
64 | stack_t32 stack; | 64 | compat_stack_t stack; |
65 | unsigned int extra_size; /* Should be sizeof(siginfo_extra_v8plus_t) */ | 65 | unsigned int extra_size; /* Should be sizeof(siginfo_extra_v8plus_t) */ |
66 | /* Only valid if (regs.psr & (PSR_VERS|PSR_IMPL)) == PSR_V8PLUS */ | 66 | /* Only valid if (regs.psr & (PSR_VERS|PSR_IMPL)) == PSR_V8PLUS */ |
67 | siginfo_extra_v8plus_t v8plus; | 67 | siginfo_extra_v8plus_t v8plus; |
@@ -230,13 +230,11 @@ segv: | |||
230 | asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) | 230 | asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) |
231 | { | 231 | { |
232 | struct rt_signal_frame32 __user *sf; | 232 | struct rt_signal_frame32 __user *sf; |
233 | unsigned int psr, pc, npc, u_ss_sp; | 233 | unsigned int psr, pc, npc; |
234 | compat_uptr_t fpu_save; | 234 | compat_uptr_t fpu_save; |
235 | compat_uptr_t rwin_save; | 235 | compat_uptr_t rwin_save; |
236 | mm_segment_t old_fs; | ||
237 | sigset_t set; | 236 | sigset_t set; |
238 | compat_sigset_t seta; | 237 | compat_sigset_t seta; |
239 | stack_t st; | ||
240 | int err, i; | 238 | int err, i; |
241 | 239 | ||
242 | /* Always make any pending restarted system calls return -EINTR */ | 240 | /* Always make any pending restarted system calls return -EINTR */ |
@@ -295,20 +293,10 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) | |||
295 | if (!err && fpu_save) | 293 | if (!err && fpu_save) |
296 | err |= restore_fpu_state(regs, compat_ptr(fpu_save)); | 294 | err |= restore_fpu_state(regs, compat_ptr(fpu_save)); |
297 | err |= copy_from_user(&seta, &sf->mask, sizeof(compat_sigset_t)); | 295 | err |= copy_from_user(&seta, &sf->mask, sizeof(compat_sigset_t)); |
298 | err |= __get_user(u_ss_sp, &sf->stack.ss_sp); | 296 | err |= compat_restore_altstack(&sf->stack); |
299 | st.ss_sp = compat_ptr(u_ss_sp); | ||
300 | err |= __get_user(st.ss_flags, &sf->stack.ss_flags); | ||
301 | err |= __get_user(st.ss_size, &sf->stack.ss_size); | ||
302 | if (err) | 297 | if (err) |
303 | goto segv; | 298 | goto segv; |
304 | 299 | ||
305 | /* It is more difficult to avoid calling this function than to | ||
306 | call it and ignore errors. */ | ||
307 | old_fs = get_fs(); | ||
308 | set_fs(KERNEL_DS); | ||
309 | do_sigaltstack((stack_t __user *) &st, NULL, (unsigned long)sf); | ||
310 | set_fs(old_fs); | ||
311 | |||
312 | err |= __get_user(rwin_save, &sf->rwin_save); | 300 | err |= __get_user(rwin_save, &sf->rwin_save); |
313 | if (!err && rwin_save) { | 301 | if (!err && rwin_save) { |
314 | if (restore_rwin_state(compat_ptr(rwin_save))) | 302 | if (restore_rwin_state(compat_ptr(rwin_save))) |
@@ -642,9 +630,7 @@ static int setup_rt_frame32(struct k_sigaction *ka, struct pt_regs *regs, | |||
642 | err |= copy_siginfo_to_user32(&sf->info, info); | 630 | err |= copy_siginfo_to_user32(&sf->info, info); |
643 | 631 | ||
644 | /* Setup sigaltstack */ | 632 | /* Setup sigaltstack */ |
645 | err |= __put_user(current->sas_ss_sp, &sf->stack.ss_sp); | 633 | err |= __compat_save_altstack(&sf->stack, regs->u_regs[UREG_FP]); |
646 | err |= __put_user(sas_ss_flags(regs->u_regs[UREG_FP]), &sf->stack.ss_flags); | ||
647 | err |= __put_user(current->sas_ss_size, &sf->stack.ss_size); | ||
648 | 634 | ||
649 | switch (_NSIG_WORDS) { | 635 | switch (_NSIG_WORDS) { |
650 | case 4: seta.sig[7] = (oldset->sig[3] >> 32); | 636 | case 4: seta.sig[7] = (oldset->sig[3] >> 32); |
@@ -856,29 +842,3 @@ asmlinkage int do_sys32_sigstack(u32 u_ssptr, u32 u_ossptr, unsigned long sp) | |||
856 | out: | 842 | out: |
857 | return ret; | 843 | return ret; |
858 | } | 844 | } |
859 | |||
860 | asmlinkage long do_sys32_sigaltstack(u32 ussa, u32 uossa, unsigned long sp) | ||
861 | { | ||
862 | stack_t uss, uoss; | ||
863 | u32 u_ss_sp = 0; | ||
864 | int ret; | ||
865 | mm_segment_t old_fs; | ||
866 | stack_t32 __user *uss32 = compat_ptr(ussa); | ||
867 | stack_t32 __user *uoss32 = compat_ptr(uossa); | ||
868 | |||
869 | if (ussa && (get_user(u_ss_sp, &uss32->ss_sp) || | ||
870 | __get_user(uss.ss_flags, &uss32->ss_flags) || | ||
871 | __get_user(uss.ss_size, &uss32->ss_size))) | ||
872 | return -EFAULT; | ||
873 | uss.ss_sp = compat_ptr(u_ss_sp); | ||
874 | old_fs = get_fs(); | ||
875 | set_fs(KERNEL_DS); | ||
876 | ret = do_sigaltstack(ussa ? (stack_t __user *) &uss : NULL, | ||
877 | uossa ? (stack_t __user *) &uoss : NULL, sp); | ||
878 | set_fs(old_fs); | ||
879 | if (!ret && uossa && (put_user(ptr_to_compat(uoss.ss_sp), &uoss32->ss_sp) || | ||
880 | __put_user(uoss.ss_flags, &uoss32->ss_flags) || | ||
881 | __put_user(uoss.ss_size, &uoss32->ss_size))) | ||
882 | return -EFAULT; | ||
883 | return ret; | ||
884 | } | ||
diff --git a/arch/sparc/kernel/signal_32.c b/arch/sparc/kernel/signal_32.c index 68f9c8650af4..cd1823487759 100644 --- a/arch/sparc/kernel/signal_32.c +++ b/arch/sparc/kernel/signal_32.c | |||
@@ -59,18 +59,6 @@ struct rt_signal_frame { | |||
59 | #define SF_ALIGNEDSZ (((sizeof(struct signal_frame) + 7) & (~7))) | 59 | #define SF_ALIGNEDSZ (((sizeof(struct signal_frame) + 7) & (~7))) |
60 | #define RT_ALIGNEDSZ (((sizeof(struct rt_signal_frame) + 7) & (~7))) | 60 | #define RT_ALIGNEDSZ (((sizeof(struct rt_signal_frame) + 7) & (~7))) |
61 | 61 | ||
62 | static int _sigpause_common(old_sigset_t set) | ||
63 | { | ||
64 | sigset_t blocked; | ||
65 | siginitset(&blocked, set); | ||
66 | return sigsuspend(&blocked); | ||
67 | } | ||
68 | |||
69 | asmlinkage int sys_sigsuspend(old_sigset_t set) | ||
70 | { | ||
71 | return _sigpause_common(set); | ||
72 | } | ||
73 | |||
74 | asmlinkage void do_sigreturn(struct pt_regs *regs) | 62 | asmlinkage void do_sigreturn(struct pt_regs *regs) |
75 | { | 63 | { |
76 | struct signal_frame __user *sf; | 64 | struct signal_frame __user *sf; |
@@ -141,9 +129,7 @@ asmlinkage void do_rt_sigreturn(struct pt_regs *regs) | |||
141 | unsigned int psr, pc, npc; | 129 | unsigned int psr, pc, npc; |
142 | __siginfo_fpu_t __user *fpu_save; | 130 | __siginfo_fpu_t __user *fpu_save; |
143 | __siginfo_rwin_t __user *rwin_save; | 131 | __siginfo_rwin_t __user *rwin_save; |
144 | mm_segment_t old_fs; | ||
145 | sigset_t set; | 132 | sigset_t set; |
146 | stack_t st; | ||
147 | int err; | 133 | int err; |
148 | 134 | ||
149 | synchronize_user_stack(); | 135 | synchronize_user_stack(); |
@@ -171,8 +157,7 @@ asmlinkage void do_rt_sigreturn(struct pt_regs *regs) | |||
171 | if (!err && fpu_save) | 157 | if (!err && fpu_save) |
172 | err |= restore_fpu_state(regs, fpu_save); | 158 | err |= restore_fpu_state(regs, fpu_save); |
173 | err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); | 159 | err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); |
174 | 160 | err |= restore_altstack(&sf->stack); | |
175 | err |= __copy_from_user(&st, &sf->stack, sizeof(stack_t)); | ||
176 | 161 | ||
177 | if (err) | 162 | if (err) |
178 | goto segv; | 163 | goto segv; |
@@ -180,14 +165,6 @@ asmlinkage void do_rt_sigreturn(struct pt_regs *regs) | |||
180 | regs->pc = pc; | 165 | regs->pc = pc; |
181 | regs->npc = npc; | 166 | regs->npc = npc; |
182 | 167 | ||
183 | /* It is more difficult to avoid calling this function than to | ||
184 | * call it and ignore errors. | ||
185 | */ | ||
186 | old_fs = get_fs(); | ||
187 | set_fs(KERNEL_DS); | ||
188 | do_sigaltstack((const stack_t __user *) &st, NULL, (unsigned long)sf); | ||
189 | set_fs(old_fs); | ||
190 | |||
191 | err |= __get_user(rwin_save, &sf->rwin_save); | 168 | err |= __get_user(rwin_save, &sf->rwin_save); |
192 | if (!err && rwin_save) { | 169 | if (!err && rwin_save) { |
193 | if (restore_rwin_state(rwin_save)) | 170 | if (restore_rwin_state(rwin_save)) |
@@ -391,9 +368,7 @@ static int setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs, | |||
391 | err |= __copy_to_user(&sf->mask, &oldset->sig[0], sizeof(sigset_t)); | 368 | err |= __copy_to_user(&sf->mask, &oldset->sig[0], sizeof(sigset_t)); |
392 | 369 | ||
393 | /* Setup sigaltstack */ | 370 | /* Setup sigaltstack */ |
394 | err |= __put_user(current->sas_ss_sp, &sf->stack.ss_sp); | 371 | err |= __save_altstack(&sf->stack, regs->u_regs[UREG_FP]); |
395 | err |= __put_user(sas_ss_flags(regs->u_regs[UREG_FP]), &sf->stack.ss_flags); | ||
396 | err |= __put_user(current->sas_ss_size, &sf->stack.ss_size); | ||
397 | 372 | ||
398 | if (!wsaved) { | 373 | if (!wsaved) { |
399 | err |= __copy_to_user(sf, (char *) regs->u_regs[UREG_FP], | 374 | err |= __copy_to_user(sf, (char *) regs->u_regs[UREG_FP], |
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c index 689e1ba62809..165a897a4133 100644 --- a/arch/sparc/kernel/signal_64.c +++ b/arch/sparc/kernel/signal_64.c | |||
@@ -236,23 +236,6 @@ struct rt_signal_frame { | |||
236 | __siginfo_rwin_t *rwin_save; | 236 | __siginfo_rwin_t *rwin_save; |
237 | }; | 237 | }; |
238 | 238 | ||
239 | static long _sigpause_common(old_sigset_t set) | ||
240 | { | ||
241 | sigset_t blocked; | ||
242 | siginitset(&blocked, set); | ||
243 | return sigsuspend(&blocked); | ||
244 | } | ||
245 | |||
246 | asmlinkage long sys_sigpause(unsigned int set) | ||
247 | { | ||
248 | return _sigpause_common(set); | ||
249 | } | ||
250 | |||
251 | asmlinkage long sys_sigsuspend(old_sigset_t set) | ||
252 | { | ||
253 | return _sigpause_common(set); | ||
254 | } | ||
255 | |||
256 | void do_rt_sigreturn(struct pt_regs *regs) | 239 | void do_rt_sigreturn(struct pt_regs *regs) |
257 | { | 240 | { |
258 | struct rt_signal_frame __user *sf; | 241 | struct rt_signal_frame __user *sf; |
@@ -295,7 +278,8 @@ void do_rt_sigreturn(struct pt_regs *regs) | |||
295 | err |= restore_fpu_state(regs, fpu_save); | 278 | err |= restore_fpu_state(regs, fpu_save); |
296 | 279 | ||
297 | err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); | 280 | err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); |
298 | if (err || do_sigaltstack(&sf->stack, NULL, (unsigned long)sf) == -EFAULT) | 281 | err |= restore_altstack(&sf->stack); |
282 | if (err) | ||
299 | goto segv; | 283 | goto segv; |
300 | 284 | ||
301 | err |= __get_user(rwin_save, &sf->rwin_save); | 285 | err |= __get_user(rwin_save, &sf->rwin_save); |
@@ -403,9 +387,7 @@ setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs, | |||
403 | } | 387 | } |
404 | 388 | ||
405 | /* Setup sigaltstack */ | 389 | /* Setup sigaltstack */ |
406 | err |= __put_user(current->sas_ss_sp, &sf->stack.ss_sp); | 390 | err |= __save_altstack(&sf->stack, regs->u_regs[UREG_FP]); |
407 | err |= __put_user(sas_ss_flags(regs->u_regs[UREG_FP]), &sf->stack.ss_flags); | ||
408 | err |= __put_user(current->sas_ss_size, &sf->stack.ss_size); | ||
409 | 391 | ||
410 | err |= copy_to_user(&sf->mask, oldset, sizeof(sigset_t)); | 392 | err |= copy_to_user(&sf->mask, oldset, sizeof(sigset_t)); |
411 | 393 | ||
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S index 8475a474273a..240a3cecc11e 100644 --- a/arch/sparc/kernel/sys32.S +++ b/arch/sparc/kernel/sys32.S | |||
@@ -36,108 +36,22 @@ STUB: sra REG1, 0, REG1; \ | |||
36 | jmpl %g1 + %lo(SYSCALL), %g0; \ | 36 | jmpl %g1 + %lo(SYSCALL), %g0; \ |
37 | sra REG3, 0, REG3 | 37 | sra REG3, 0, REG3 |
38 | 38 | ||
39 | #define SIGN4(STUB,SYSCALL,REG1,REG2,REG3,REG4) \ | ||
40 | .align 32; \ | ||
41 | .globl STUB; \ | ||
42 | STUB: sra REG1, 0, REG1; \ | ||
43 | sethi %hi(SYSCALL), %g1; \ | ||
44 | sra REG2, 0, REG2; \ | ||
45 | sra REG3, 0, REG3; \ | ||
46 | jmpl %g1 + %lo(SYSCALL), %g0; \ | ||
47 | sra REG4, 0, REG4 | ||
48 | |||
49 | SIGN1(sys32_exit, sparc_exit, %o0) | ||
50 | SIGN1(sys32_exit_group, sparc_exit_group, %o0) | ||
51 | SIGN1(sys32_wait4, compat_sys_wait4, %o2) | ||
52 | SIGN1(sys32_creat, sys_creat, %o1) | ||
53 | SIGN1(sys32_mknod, sys_mknod, %o1) | ||
54 | SIGN1(sys32_umount, sys_umount, %o1) | ||
55 | SIGN1(sys32_signal, sys_signal, %o0) | ||
56 | SIGN1(sys32_access, sys_access, %o1) | ||
57 | SIGN1(sys32_msync, sys_msync, %o2) | ||
58 | SIGN2(sys32_reboot, sys_reboot, %o0, %o1) | ||
59 | SIGN1(sys32_setitimer, compat_sys_setitimer, %o0) | ||
60 | SIGN1(sys32_getitimer, compat_sys_getitimer, %o0) | ||
61 | SIGN1(sys32_sethostname, sys_sethostname, %o1) | ||
62 | SIGN1(sys32_swapon, sys_swapon, %o1) | ||
63 | SIGN1(sys32_sigaction, compat_sys_sigaction, %o0) | ||
64 | SIGN1(sys32_rt_sigaction, compat_sys_rt_sigaction, %o0) | ||
65 | SIGN1(sys32_sigprocmask, compat_sys_sigprocmask, %o0) | ||
66 | SIGN1(sys32_rt_sigprocmask, compat_sys_rt_sigprocmask, %o0) | ||
67 | SIGN2(sys32_rt_sigqueueinfo, compat_sys_rt_sigqueueinfo, %o0, %o1) | ||
68 | SIGN1(sys32_getrusage, compat_sys_getrusage, %o0) | 39 | SIGN1(sys32_getrusage, compat_sys_getrusage, %o0) |
69 | SIGN1(sys32_setxattr, sys_setxattr, %o4) | ||
70 | SIGN1(sys32_lsetxattr, sys_lsetxattr, %o4) | ||
71 | SIGN1(sys32_fsetxattr, sys_fsetxattr, %o4) | ||
72 | SIGN1(sys32_fgetxattr, sys_fgetxattr, %o0) | ||
73 | SIGN1(sys32_flistxattr, sys_flistxattr, %o0) | ||
74 | SIGN1(sys32_fremovexattr, sys_fremovexattr, %o0) | ||
75 | SIGN2(sys32_tkill, sys_tkill, %o0, %o1) | ||
76 | SIGN1(sys32_epoll_create, sys_epoll_create, %o0) | ||
77 | SIGN3(sys32_epoll_ctl, sys_epoll_ctl, %o0, %o1, %o2) | ||
78 | SIGN3(sys32_epoll_wait, sys_epoll_wait, %o0, %o2, %o3) | ||
79 | SIGN1(sys32_readahead, compat_sys_readahead, %o0) | 40 | SIGN1(sys32_readahead, compat_sys_readahead, %o0) |
80 | SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4) | 41 | SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4) |
81 | SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5) | 42 | SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5) |
82 | SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1) | ||
83 | SIGN1(sys32_mlockall, sys_mlockall, %o0) | ||
84 | SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1) | 43 | SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1) |
85 | SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1) | 44 | SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1) |
86 | SIGN1(sys32_io_submit, compat_sys_io_submit, %o1) | 45 | SIGN1(sys32_io_submit, compat_sys_io_submit, %o1) |
87 | SIGN1(sys32_mq_open, compat_sys_mq_open, %o1) | 46 | SIGN1(sys32_mq_open, compat_sys_mq_open, %o1) |
88 | SIGN1(sys32_select, compat_sys_select, %o0) | 47 | SIGN1(sys32_select, compat_sys_select, %o0) |
89 | SIGN1(sys32_mkdir, sys_mkdir, %o1) | ||
90 | SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5) | 48 | SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5) |
91 | SIGN1(sys32_sysfs, compat_sys_sysfs, %o0) | ||
92 | SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1) | 49 | SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1) |
93 | SIGN2(sys32_sendfile64, sys_sendfile, %o0, %o1) | ||
94 | SIGN1(sys32_prctl, sys_prctl, %o0) | ||
95 | SIGN1(sys32_sched_rr_get_interval, compat_sys_sched_rr_get_interval, %o0) | ||
96 | SIGN2(sys32_waitpid, sys_waitpid, %o0, %o2) | ||
97 | SIGN1(sys32_getgroups, sys_getgroups, %o0) | ||
98 | SIGN1(sys32_getpgid, sys_getpgid, %o0) | ||
99 | SIGN2(sys32_getpriority, sys_getpriority, %o0, %o1) | ||
100 | SIGN1(sys32_getsid, sys_getsid, %o0) | ||
101 | SIGN2(sys32_kill, sys_kill, %o0, %o1) | ||
102 | SIGN1(sys32_nice, sys_nice, %o0) | ||
103 | SIGN1(sys32_lseek, sys_lseek, %o1) | ||
104 | SIGN2(sys32_open, sparc32_open, %o1, %o2) | ||
105 | SIGN1(sys32_readlink, sys_readlink, %o2) | ||
106 | SIGN1(sys32_sched_get_priority_max, sys_sched_get_priority_max, %o0) | ||
107 | SIGN1(sys32_sched_get_priority_min, sys_sched_get_priority_min, %o0) | ||
108 | SIGN1(sys32_sched_getparam, sys_sched_getparam, %o0) | ||
109 | SIGN1(sys32_sched_getscheduler, sys_sched_getscheduler, %o0) | ||
110 | SIGN1(sys32_sched_setparam, sys_sched_setparam, %o0) | ||
111 | SIGN2(sys32_sched_setscheduler, sys_sched_setscheduler, %o0, %o1) | ||
112 | SIGN1(sys32_getdomainname, sys_getdomainname, %o1) | ||
113 | SIGN1(sys32_setdomainname, sys_setdomainname, %o1) | ||
114 | SIGN1(sys32_setgroups, sys_setgroups, %o0) | ||
115 | SIGN2(sys32_setpgid, sys_setpgid, %o0, %o1) | ||
116 | SIGN3(sys32_setpriority, sys_setpriority, %o0, %o1, %o2) | ||
117 | SIGN1(sys32_ssetmask, sys_ssetmask, %o0) | ||
118 | SIGN2(sys32_syslog, sys_syslog, %o0, %o2) | ||
119 | SIGN1(sys32_umask, sys_umask, %o0) | ||
120 | SIGN3(sys32_tgkill, sys_tgkill, %o0, %o1, %o2) | ||
121 | SIGN1(sys32_sendto, sys_sendto, %o0) | ||
122 | SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0) | 50 | SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0) |
123 | SIGN3(sys32_socket, sys_socket, %o0, %o1, %o2) | ||
124 | SIGN2(sys32_connect, sys_connect, %o0, %o2) | ||
125 | SIGN2(sys32_bind, sys_bind, %o0, %o2) | ||
126 | SIGN2(sys32_listen, sys_listen, %o0, %o1) | ||
127 | SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0) | 51 | SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0) |
128 | SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0) | 52 | SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0) |
129 | SIGN2(sys32_shutdown, sys_shutdown, %o0, %o1) | ||
130 | SIGN3(sys32_socketpair, sys_socketpair, %o0, %o1, %o2) | ||
131 | SIGN1(sys32_getpeername, sys_getpeername, %o0) | ||
132 | SIGN1(sys32_getsockname, sys_getsockname, %o0) | ||
133 | SIGN2(sys32_ioprio_get, sys_ioprio_get, %o0, %o1) | ||
134 | SIGN3(sys32_ioprio_set, sys_ioprio_set, %o0, %o1, %o2) | ||
135 | SIGN2(sys32_splice, sys_splice, %o0, %o2) | ||
136 | SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5) | 53 | SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5) |
137 | SIGN2(sys32_tee, sys_tee, %o0, %o1) | ||
138 | SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0) | 54 | SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0) |
139 | SIGN1(sys32_truncate, sys_truncate, %o1) | ||
140 | SIGN1(sys32_ftruncate, sys_ftruncate, %o1) | ||
141 | 55 | ||
142 | .globl sys32_mmap2 | 56 | .globl sys32_mmap2 |
143 | sys32_mmap2: | 57 | sys32_mmap2: |
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c index 4a4cdc633f6b..f38f2280fade 100644 --- a/arch/sparc/kernel/sys_sparc32.c +++ b/arch/sparc/kernel/sys_sparc32.c | |||
@@ -206,133 +206,19 @@ asmlinkage long compat_sys_fstatat64(unsigned int dfd, | |||
206 | return cp_compat_stat64(&stat, statbuf); | 206 | return cp_compat_stat64(&stat, statbuf); |
207 | } | 207 | } |
208 | 208 | ||
209 | asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2) | 209 | COMPAT_SYSCALL_DEFINE3(sparc_sigaction, int, sig, |
210 | struct compat_old_sigaction __user *,act, | ||
211 | struct compat_old_sigaction __user *,oact) | ||
210 | { | 212 | { |
211 | return sys_sysfs(option, arg1, arg2); | ||
212 | } | ||
213 | |||
214 | asmlinkage long compat_sys_rt_sigprocmask(int how, | ||
215 | compat_sigset_t __user *set, | ||
216 | compat_sigset_t __user *oset, | ||
217 | compat_size_t sigsetsize) | ||
218 | { | ||
219 | sigset_t s; | ||
220 | compat_sigset_t s32; | ||
221 | int ret; | ||
222 | mm_segment_t old_fs = get_fs(); | ||
223 | |||
224 | if (set) { | ||
225 | if (copy_from_user (&s32, set, sizeof(compat_sigset_t))) | ||
226 | return -EFAULT; | ||
227 | switch (_NSIG_WORDS) { | ||
228 | case 4: s.sig[3] = s32.sig[6] | (((long)s32.sig[7]) << 32); | ||
229 | case 3: s.sig[2] = s32.sig[4] | (((long)s32.sig[5]) << 32); | ||
230 | case 2: s.sig[1] = s32.sig[2] | (((long)s32.sig[3]) << 32); | ||
231 | case 1: s.sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32); | ||
232 | } | ||
233 | } | ||
234 | set_fs (KERNEL_DS); | ||
235 | ret = sys_rt_sigprocmask(how, | ||
236 | set ? (sigset_t __user *) &s : NULL, | ||
237 | oset ? (sigset_t __user *) &s : NULL, | ||
238 | sigsetsize); | ||
239 | set_fs (old_fs); | ||
240 | if (ret) return ret; | ||
241 | if (oset) { | ||
242 | switch (_NSIG_WORDS) { | ||
243 | case 4: s32.sig[7] = (s.sig[3] >> 32); s32.sig[6] = s.sig[3]; | ||
244 | case 3: s32.sig[5] = (s.sig[2] >> 32); s32.sig[4] = s.sig[2]; | ||
245 | case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1]; | ||
246 | case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0]; | ||
247 | } | ||
248 | if (copy_to_user (oset, &s32, sizeof(compat_sigset_t))) | ||
249 | return -EFAULT; | ||
250 | } | ||
251 | return 0; | ||
252 | } | ||
253 | |||
254 | asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, | ||
255 | compat_size_t sigsetsize) | ||
256 | { | ||
257 | sigset_t s; | ||
258 | compat_sigset_t s32; | ||
259 | int ret; | ||
260 | mm_segment_t old_fs = get_fs(); | ||
261 | |||
262 | set_fs (KERNEL_DS); | ||
263 | ret = sys_rt_sigpending((sigset_t __user *) &s, sigsetsize); | ||
264 | set_fs (old_fs); | ||
265 | if (!ret) { | ||
266 | switch (_NSIG_WORDS) { | ||
267 | case 4: s32.sig[7] = (s.sig[3] >> 32); s32.sig[6] = s.sig[3]; | ||
268 | case 3: s32.sig[5] = (s.sig[2] >> 32); s32.sig[4] = s.sig[2]; | ||
269 | case 2: s32.sig[3] = (s.sig[1] >> 32); s32.sig[2] = s.sig[1]; | ||
270 | case 1: s32.sig[1] = (s.sig[0] >> 32); s32.sig[0] = s.sig[0]; | ||
271 | } | ||
272 | if (copy_to_user (set, &s32, sizeof(compat_sigset_t))) | ||
273 | return -EFAULT; | ||
274 | } | ||
275 | return ret; | ||
276 | } | ||
277 | |||
278 | asmlinkage long compat_sys_rt_sigqueueinfo(int pid, int sig, | ||
279 | struct compat_siginfo __user *uinfo) | ||
280 | { | ||
281 | siginfo_t info; | ||
282 | int ret; | ||
283 | mm_segment_t old_fs = get_fs(); | ||
284 | |||
285 | if (copy_siginfo_from_user32(&info, uinfo)) | ||
286 | return -EFAULT; | ||
287 | |||
288 | set_fs (KERNEL_DS); | ||
289 | ret = sys_rt_sigqueueinfo(pid, sig, (siginfo_t __user *) &info); | ||
290 | set_fs (old_fs); | ||
291 | return ret; | ||
292 | } | ||
293 | |||
294 | asmlinkage long compat_sys_sigaction(int sig, struct old_sigaction32 __user *act, | ||
295 | struct old_sigaction32 __user *oact) | ||
296 | { | ||
297 | struct k_sigaction new_ka, old_ka; | ||
298 | int ret; | ||
299 | |||
300 | WARN_ON_ONCE(sig >= 0); | 213 | WARN_ON_ONCE(sig >= 0); |
301 | sig = -sig; | 214 | return compat_sys_sigaction(-sig, act, oact); |
302 | |||
303 | if (act) { | ||
304 | compat_old_sigset_t mask; | ||
305 | u32 u_handler, u_restorer; | ||
306 | |||
307 | ret = get_user(u_handler, &act->sa_handler); | ||
308 | new_ka.sa.sa_handler = compat_ptr(u_handler); | ||
309 | ret |= __get_user(u_restorer, &act->sa_restorer); | ||
310 | new_ka.sa.sa_restorer = compat_ptr(u_restorer); | ||
311 | ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); | ||
312 | ret |= __get_user(mask, &act->sa_mask); | ||
313 | if (ret) | ||
314 | return ret; | ||
315 | new_ka.ka_restorer = NULL; | ||
316 | siginitset(&new_ka.sa.sa_mask, mask); | ||
317 | } | ||
318 | |||
319 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | ||
320 | |||
321 | if (!ret && oact) { | ||
322 | ret = put_user(ptr_to_compat(old_ka.sa.sa_handler), &oact->sa_handler); | ||
323 | ret |= __put_user(ptr_to_compat(old_ka.sa.sa_restorer), &oact->sa_restorer); | ||
324 | ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); | ||
325 | ret |= __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); | ||
326 | } | ||
327 | |||
328 | return ret; | ||
329 | } | 215 | } |
330 | 216 | ||
331 | asmlinkage long compat_sys_rt_sigaction(int sig, | 217 | COMPAT_SYSCALL_DEFINE5(rt_sigaction, int, sig, |
332 | struct sigaction32 __user *act, | 218 | struct compat_sigaction __user *,act, |
333 | struct sigaction32 __user *oact, | 219 | struct compat_sigaction __user *,oact, |
334 | void __user *restorer, | 220 | void __user *,restorer, |
335 | compat_size_t sigsetsize) | 221 | compat_size_t,sigsetsize) |
336 | { | 222 | { |
337 | struct k_sigaction new_ka, old_ka; | 223 | struct k_sigaction new_ka, old_ka; |
338 | int ret; | 224 | int ret; |
@@ -349,12 +235,7 @@ asmlinkage long compat_sys_rt_sigaction(int sig, | |||
349 | ret = get_user(u_handler, &act->sa_handler); | 235 | ret = get_user(u_handler, &act->sa_handler); |
350 | new_ka.sa.sa_handler = compat_ptr(u_handler); | 236 | new_ka.sa.sa_handler = compat_ptr(u_handler); |
351 | ret |= __copy_from_user(&set32, &act->sa_mask, sizeof(compat_sigset_t)); | 237 | ret |= __copy_from_user(&set32, &act->sa_mask, sizeof(compat_sigset_t)); |
352 | switch (_NSIG_WORDS) { | 238 | sigset_from_compat(&new_ka.sa.sa_mask, &set32); |
353 | case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6] | (((long)set32.sig[7]) << 32); | ||
354 | case 3: new_ka.sa.sa_mask.sig[2] = set32.sig[4] | (((long)set32.sig[5]) << 32); | ||
355 | case 2: new_ka.sa.sa_mask.sig[1] = set32.sig[2] | (((long)set32.sig[3]) << 32); | ||
356 | case 1: new_ka.sa.sa_mask.sig[0] = set32.sig[0] | (((long)set32.sig[1]) << 32); | ||
357 | } | ||
358 | ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); | 239 | ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); |
359 | ret |= __get_user(u_restorer, &act->sa_restorer); | 240 | ret |= __get_user(u_restorer, &act->sa_restorer); |
360 | new_ka.sa.sa_restorer = compat_ptr(u_restorer); | 241 | new_ka.sa.sa_restorer = compat_ptr(u_restorer); |
@@ -365,12 +246,7 @@ asmlinkage long compat_sys_rt_sigaction(int sig, | |||
365 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | 246 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); |
366 | 247 | ||
367 | if (!ret && oact) { | 248 | if (!ret && oact) { |
368 | switch (_NSIG_WORDS) { | 249 | sigset_to_compat(&set32, &old_ka.sa.sa_mask); |
369 | case 4: set32.sig[7] = (old_ka.sa.sa_mask.sig[3] >> 32); set32.sig[6] = old_ka.sa.sa_mask.sig[3]; | ||
370 | case 3: set32.sig[5] = (old_ka.sa.sa_mask.sig[2] >> 32); set32.sig[4] = old_ka.sa.sa_mask.sig[2]; | ||
371 | case 2: set32.sig[3] = (old_ka.sa.sa_mask.sig[1] >> 32); set32.sig[2] = old_ka.sa.sa_mask.sig[1]; | ||
372 | case 1: set32.sig[1] = (old_ka.sa.sa_mask.sig[0] >> 32); set32.sig[0] = old_ka.sa.sa_mask.sig[0]; | ||
373 | } | ||
374 | ret = put_user(ptr_to_compat(old_ka.sa.sa_handler), &oact->sa_handler); | 250 | ret = put_user(ptr_to_compat(old_ka.sa.sa_handler), &oact->sa_handler); |
375 | ret |= __copy_to_user(&oact->sa_mask, &set32, sizeof(compat_sigset_t)); | 251 | ret |= __copy_to_user(&oact->sa_mask, &set32, sizeof(compat_sigset_t)); |
376 | ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); | 252 | ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); |
@@ -382,35 +258,6 @@ asmlinkage long compat_sys_rt_sigaction(int sig, | |||
382 | return ret; | 258 | return ret; |
383 | } | 259 | } |
384 | 260 | ||
385 | #ifdef CONFIG_MODULES | ||
386 | |||
387 | asmlinkage long sys32_init_module(void __user *umod, u32 len, | ||
388 | const char __user *uargs) | ||
389 | { | ||
390 | return sys_init_module(umod, len, uargs); | ||
391 | } | ||
392 | |||
393 | asmlinkage long sys32_delete_module(const char __user *name_user, | ||
394 | unsigned int flags) | ||
395 | { | ||
396 | return sys_delete_module(name_user, flags); | ||
397 | } | ||
398 | |||
399 | #else /* CONFIG_MODULES */ | ||
400 | |||
401 | asmlinkage long sys32_init_module(const char __user *name_user, | ||
402 | struct module __user *mod_user) | ||
403 | { | ||
404 | return -ENOSYS; | ||
405 | } | ||
406 | |||
407 | asmlinkage long sys32_delete_module(const char __user *name_user) | ||
408 | { | ||
409 | return -ENOSYS; | ||
410 | } | ||
411 | |||
412 | #endif /* CONFIG_MODULES */ | ||
413 | |||
414 | asmlinkage compat_ssize_t sys32_pread64(unsigned int fd, | 261 | asmlinkage compat_ssize_t sys32_pread64(unsigned int fd, |
415 | char __user *ubuf, | 262 | char __user *ubuf, |
416 | compat_size_t count, | 263 | compat_size_t count, |
@@ -456,16 +303,6 @@ long compat_sys_fadvise64_64(int fd, | |||
456 | advice); | 303 | advice); |
457 | } | 304 | } |
458 | 305 | ||
459 | /* This is just a version for 32-bit applications which does | ||
460 | * not force O_LARGEFILE on. | ||
461 | */ | ||
462 | |||
463 | asmlinkage long sparc32_open(const char __user *filename, | ||
464 | int flags, int mode) | ||
465 | { | ||
466 | return do_sys_open(AT_FDCWD, filename, flags, mode); | ||
467 | } | ||
468 | |||
469 | long sys32_lookup_dcookie(unsigned long cookie_high, | 306 | long sys32_lookup_dcookie(unsigned long cookie_high, |
470 | unsigned long cookie_low, | 307 | unsigned long cookie_low, |
471 | char __user *buf, size_t len) | 308 | char __user *buf, size_t len) |
diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c index cdd2d7035930..3a8d1844402e 100644 --- a/arch/sparc/kernel/sys_sparc_32.c +++ b/arch/sparc/kernel/sys_sparc_32.c | |||
@@ -160,41 +160,12 @@ sparc_breakpoint (struct pt_regs *regs) | |||
160 | #endif | 160 | #endif |
161 | } | 161 | } |
162 | 162 | ||
163 | asmlinkage int | 163 | SYSCALL_DEFINE3(sparc_sigaction, int, sig, |
164 | sparc_sigaction (int sig, const struct old_sigaction __user *act, | 164 | struct old_sigaction __user *,act, |
165 | struct old_sigaction __user *oact) | 165 | struct old_sigaction __user *,oact) |
166 | { | 166 | { |
167 | struct k_sigaction new_ka, old_ka; | ||
168 | int ret; | ||
169 | |||
170 | WARN_ON_ONCE(sig >= 0); | 167 | WARN_ON_ONCE(sig >= 0); |
171 | sig = -sig; | 168 | return sys_sigaction(-sig, act, oact); |
172 | |||
173 | if (act) { | ||
174 | unsigned long mask; | ||
175 | |||
176 | if (!access_ok(VERIFY_READ, act, sizeof(*act)) || | ||
177 | __get_user(new_ka.sa.sa_handler, &act->sa_handler) || | ||
178 | __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) || | ||
179 | __get_user(new_ka.sa.sa_flags, &act->sa_flags) || | ||
180 | __get_user(mask, &act->sa_mask)) | ||
181 | return -EFAULT; | ||
182 | siginitset(&new_ka.sa.sa_mask, mask); | ||
183 | new_ka.ka_restorer = NULL; | ||
184 | } | ||
185 | |||
186 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | ||
187 | |||
188 | if (!ret && oact) { | ||
189 | if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || | ||
190 | __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || | ||
191 | __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) || | ||
192 | __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || | ||
193 | __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) | ||
194 | return -EFAULT; | ||
195 | } | ||
196 | |||
197 | return ret; | ||
198 | } | 169 | } |
199 | 170 | ||
200 | SYSCALL_DEFINE5(rt_sigaction, int, sig, | 171 | SYSCALL_DEFINE5(rt_sigaction, int, sig, |
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S index e0fed7711a94..22a1098961f5 100644 --- a/arch/sparc/kernel/syscalls.S +++ b/arch/sparc/kernel/syscalls.S | |||
@@ -25,16 +25,10 @@ sys_nis_syscall: | |||
25 | sys_memory_ordering: | 25 | sys_memory_ordering: |
26 | ba,pt %xcc, sparc_memory_ordering | 26 | ba,pt %xcc, sparc_memory_ordering |
27 | add %sp, PTREGS_OFF, %o1 | 27 | add %sp, PTREGS_OFF, %o1 |
28 | sys_sigaltstack: | ||
29 | ba,pt %xcc, do_sigaltstack | ||
30 | add %i6, STACK_BIAS, %o2 | ||
31 | #ifdef CONFIG_COMPAT | 28 | #ifdef CONFIG_COMPAT |
32 | sys32_sigstack: | 29 | sys32_sigstack: |
33 | ba,pt %xcc, do_sys32_sigstack | 30 | ba,pt %xcc, do_sys32_sigstack |
34 | mov %i6, %o2 | 31 | mov %i6, %o2 |
35 | sys32_sigaltstack: | ||
36 | ba,pt %xcc, do_sys32_sigaltstack | ||
37 | mov %i6, %o2 | ||
38 | #endif | 32 | #endif |
39 | .align 32 | 33 | .align 32 |
40 | #ifdef CONFIG_COMPAT | 34 | #ifdef CONFIG_COMPAT |
diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h index 1dd89dbac8d8..26e6dd72e92a 100644 --- a/arch/sparc/kernel/systbls.h +++ b/arch/sparc/kernel/systbls.h | |||
@@ -36,8 +36,6 @@ extern asmlinkage long sys_rt_sigaction(int sig, | |||
36 | 36 | ||
37 | extern asmlinkage void sparc64_set_context(struct pt_regs *regs); | 37 | extern asmlinkage void sparc64_set_context(struct pt_regs *regs); |
38 | extern asmlinkage void sparc64_get_context(struct pt_regs *regs); | 38 | extern asmlinkage void sparc64_get_context(struct pt_regs *regs); |
39 | extern asmlinkage long sys_sigpause(unsigned int set); | ||
40 | extern asmlinkage long sys_sigsuspend(old_sigset_t set); | ||
41 | extern void do_rt_sigreturn(struct pt_regs *regs); | 39 | extern void do_rt_sigreturn(struct pt_regs *regs); |
42 | 40 | ||
43 | #endif /* _SYSTBLS_H */ | 41 | #endif /* _SYSTBLS_H */ |
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S index 6ac43c36bbbf..7b87171ecf1e 100644 --- a/arch/sparc/kernel/systbls_32.S +++ b/arch/sparc/kernel/systbls_32.S | |||
@@ -55,7 +55,7 @@ sys_call_table: | |||
55 | /*180*/ .long sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_sigpending, sys_ni_syscall | 55 | /*180*/ .long sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_sigpending, sys_ni_syscall |
56 | /*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname | 56 | /*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname |
57 | /*190*/ .long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl | 57 | /*190*/ .long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl |
58 | /*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask | 58 | /*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_sparc_sigaction, sys_sgetmask |
59 | /*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir | 59 | /*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir |
60 | /*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 | 60 | /*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 |
61 | /*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo | 61 | /*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo |
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index 1009ecb92678..260ddcd412bf 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
@@ -18,63 +18,63 @@ | |||
18 | 18 | ||
19 | .globl sys_call_table32 | 19 | .globl sys_call_table32 |
20 | sys_call_table32: | 20 | sys_call_table32: |
21 | /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write | 21 | /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write |
22 | /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link | 22 | /*5*/ .word compat_sys_open, sys_close, compat_sys_wait4, sys_creat, sys_link |
23 | /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod | 23 | /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod |
24 | /*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys32_lseek | 24 | /*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys_lseek |
25 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 | 25 | /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 |
26 | /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause | 26 | /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause |
27 | /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice | 27 | /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice |
28 | .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile | 28 | .word sys_chown, sys_sync, sys_kill, compat_sys_newstat, sys32_sendfile |
29 | /*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid | 29 | /*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid |
30 | .word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16 | 30 | .word sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16 |
31 | /*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl | 31 | /*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl |
32 | .word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve | 32 | .word sys_reboot, sys32_mmap2, sys_symlink, sys_readlink, sys32_execve |
33 | /*60*/ .word sys32_umask, sys_chroot, compat_sys_newfstat, compat_sys_fstat64, sys_getpagesize | 33 | /*60*/ .word sys_umask, sys_chroot, compat_sys_newfstat, compat_sys_fstat64, sys_getpagesize |
34 | .word sys32_msync, sys_vfork, sys32_pread64, sys32_pwrite64, sys_geteuid | 34 | .word sys_msync, sys_vfork, sys32_pread64, sys32_pwrite64, sys_geteuid |
35 | /*70*/ .word sys_getegid, sys_mmap, sys_setreuid, sys_munmap, sys_mprotect | 35 | /*70*/ .word sys_getegid, sys_mmap, sys_setreuid, sys_munmap, sys_mprotect |
36 | .word sys_madvise, sys_vhangup, sys32_truncate64, sys_mincore, sys_getgroups16 | 36 | .word sys_madvise, sys_vhangup, sys32_truncate64, sys_mincore, sys_getgroups16 |
37 | /*80*/ .word sys_setgroups16, sys_getpgrp, sys32_setgroups, sys32_setitimer, sys32_ftruncate64 | 37 | /*80*/ .word sys_setgroups16, sys_getpgrp, sys_setgroups, compat_sys_setitimer, sys32_ftruncate64 |
38 | .word sys32_swapon, sys32_getitimer, sys_setuid, sys32_sethostname, sys_setgid | 38 | .word sys_swapon, compat_sys_getitimer, sys_setuid, sys_sethostname, sys_setgid |
39 | /*90*/ .word sys_dup2, sys_setfsuid, compat_sys_fcntl, sys32_select, sys_setfsgid | 39 | /*90*/ .word sys_dup2, sys_setfsuid, compat_sys_fcntl, sys32_select, sys_setfsgid |
40 | .word sys_fsync, sys32_setpriority, sys_nis_syscall, sys_nis_syscall, sys_nis_syscall | 40 | .word sys_fsync, sys_setpriority, sys_nis_syscall, sys_nis_syscall, sys_nis_syscall |
41 | /*100*/ .word sys32_getpriority, sys32_rt_sigreturn, sys32_rt_sigaction, sys32_rt_sigprocmask, sys32_rt_sigpending | 41 | /*100*/ .word sys_getpriority, sys32_rt_sigreturn, compat_sys_rt_sigaction, compat_sys_rt_sigprocmask, compat_sys_rt_sigpending |
42 | .word compat_sys_rt_sigtimedwait, sys32_rt_sigqueueinfo, compat_sys_rt_sigsuspend, sys_setresuid, sys_getresuid | 42 | .word compat_sys_rt_sigtimedwait, compat_sys_rt_sigqueueinfo, compat_sys_rt_sigsuspend, sys_setresuid, sys_getresuid |
43 | /*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall | 43 | /*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall |
44 | .word sys32_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd | 44 | .word sys_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd |
45 | /*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod | 45 | /*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod |
46 | .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys32_truncate | 46 | .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys_truncate |
47 | /*130*/ .word sys32_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall | 47 | /*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall |
48 | .word sys_nis_syscall, sys32_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64 | 48 | .word sys_nis_syscall, sys_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64 |
49 | /*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit | 49 | /*140*/ .word sys_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit |
50 | .word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write | 50 | .word compat_sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write |
51 | /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 | 51 | /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 |
52 | .word compat_sys_fcntl64, sys_inotify_rm_watch, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount | 52 | .word compat_sys_fcntl64, sys_inotify_rm_watch, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount |
53 | /*160*/ .word compat_sys_sched_setaffinity, compat_sys_sched_getaffinity, sys32_getdomainname, sys32_setdomainname, sys_nis_syscall | 53 | /*160*/ .word compat_sys_sched_setaffinity, compat_sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_nis_syscall |
54 | .word sys_quotactl, sys_set_tid_address, compat_sys_mount, compat_sys_ustat, sys32_setxattr | 54 | .word sys_quotactl, sys_set_tid_address, compat_sys_mount, compat_sys_ustat, sys_setxattr |
55 | /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents | 55 | /*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents |
56 | .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr | 56 | .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr |
57 | /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall | 57 | /*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall |
58 | .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sys_newuname | 58 | .word sys_setpgid, sys_fremovexattr, sys_tkill, sparc_exit_group, sys_newuname |
59 | /*190*/ .word sys32_init_module, sys_sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl | 59 | /*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl |
60 | .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask | 60 | .word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask |
61 | /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir | 61 | /*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir |
62 | .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 | 62 | .word sys32_readahead, sys32_socketcall, sys_syslog, sys32_lookup_dcookie, sys32_fadvise64 |
63 | /*210*/ .word sys32_fadvise64_64, sys32_tgkill, sys32_waitpid, sys_swapoff, compat_sys_sysinfo | 63 | /*210*/ .word sys32_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo |
64 | .word compat_sys_ipc, sys32_sigreturn, sys_clone, sys32_ioprio_get, compat_sys_adjtimex | 64 | .word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex |
65 | /*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid | 65 | /*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid |
66 | .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16 | 66 | .word sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16 |
67 | /*230*/ .word sys32_select, compat_sys_time, sys32_splice, compat_sys_stime, compat_sys_statfs64 | 67 | /*230*/ .word sys32_select, compat_sys_time, sys_splice, compat_sys_stime, compat_sys_statfs64 |
68 | .word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys32_mlockall | 68 | .word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall |
69 | /*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler | 69 | /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler |
70 | .word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep | 70 | .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, compat_sys_sched_rr_get_interval, compat_sys_nanosleep |
71 | /*250*/ .word sys_mremap, compat_sys_sysctl, sys32_getsid, sys_fdatasync, sys_nis_syscall | 71 | /*250*/ .word sys_mremap, compat_sys_sysctl, sys_getsid, sys_fdatasync, sys_nis_syscall |
72 | .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep | 72 | .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep |
73 | /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun | 73 | /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun |
74 | .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy | 74 | .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy |
75 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink | 75 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink |
76 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid | 76 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid |
77 | /*280*/ .word sys32_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat | 77 | /*280*/ .word sys_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat |
78 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 | 78 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 |
79 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 79 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
80 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | 80 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare |