h8300: kill useless wrappers, fix rt_sigreturn(2)
Al Viro [Wed, 14 Nov 2012 06:20:31 +0000 (01:20 -0500)]
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

arch/h8300/kernel/signal.c
arch/h8300/kernel/syscalls.S

index 2d37418..635ece1 100644 (file)
@@ -129,9 +129,9 @@ struct rt_sigframe
 } __attribute__((aligned(2),packed));
 
 static inline int
-restore_sigcontext(struct pt_regs *regs, struct sigcontext *usc,
-                  int *pd0)
+restore_sigcontext(struct sigcontext *usc, int *pd0)
 {
+       struct pt_regs *regs = current_pt_regs();
        int err = 0;
        unsigned int ccr;
        unsigned int usp;
@@ -160,9 +160,8 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *usc,
        return err;
 }
 
-asmlinkage int do_sigreturn(unsigned long __unused,...)
+asmlinkage int sys_sigreturn(void)
 {
-       struct pt_regs *regs = (struct pt_regs *) (&__unused - 1);
        unsigned long usp = rdusp();
        struct sigframe *frame = (struct sigframe *)(usp - 4);
        sigset_t set;
@@ -178,7 +177,7 @@ asmlinkage int do_sigreturn(unsigned long __unused,...)
 
        set_current_blocked(&set);
        
-       if (restore_sigcontext(regs, &frame->sc, &er0))
+       if (restore_sigcontext(&frame->sc, &er0))
                goto badframe;
        return er0;
 
@@ -187,9 +186,8 @@ badframe:
        return 0;
 }
 
-asmlinkage int do_rt_sigreturn(unsigned long __unused,...)
+asmlinkage int sys_rt_sigreturn(void)
 {
-       struct pt_regs *regs = (struct pt_regs *) &__unused;
        unsigned long usp = rdusp();
        struct rt_sigframe *frame = (struct rt_sigframe *)(usp - 4);
        sigset_t set;
@@ -202,7 +200,7 @@ asmlinkage int do_rt_sigreturn(unsigned long __unused,...)
 
        set_current_blocked(&set);
        
-       if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &er0))
+       if (restore_sigcontext(&frame->uc.uc_mcontext, &er0))
                goto badframe;
 
        if (restore_altstack(&frame->uc.uc_stack))
index b74dd0a..5c2168f 100644 (file)
@@ -334,18 +334,3 @@ SYMBOL_NAME_LABEL(sys_call_table)
        .long SYMBOL_NAME(sys_getcpu)
        .long SYMBOL_NAME(sys_ni_syscall)       /* sys_epoll_pwait */
        .long SYMBOL_NAME(sys_setns)            /* 320 */
-
-       .macro  call_sp addr
-       mov.l   #SYMBOL_NAME(\addr),er6
-       bra     SYMBOL_NAME(syscall_trampoline):8
-       .endm
-
-SYMBOL_NAME_LABEL(sys_sigreturn)
-       call_sp do_sigreturn
-
-SYMBOL_NAME_LABEL(sys_rt_sigreturn)
-       call_sp do_rt_sigreturn
-
-SYMBOL_NAME_LABEL(syscall_trampoline)
-       mov.l   sp,er0
-       jmp     @er6