aboutsummaryrefslogtreecommitdiffstats
path: root/arch/h8300
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-11-14 01:20:31 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:15:56 -0500
commitac416143b0b4f13ff8f7beb021916e1d714dd87b (patch)
tree0e91321619a45379baf1b9cd73aad614123758ac /arch/h8300
parent6bc43c9ee92b4146b56e8758cec73f0990410326 (diff)
h8300: kill useless wrappers, fix rt_sigreturn(2)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/h8300')
-rw-r--r--arch/h8300/kernel/signal.c14
-rw-r--r--arch/h8300/kernel/syscalls.S15
2 files changed, 6 insertions, 23 deletions
diff --git a/arch/h8300/kernel/signal.c b/arch/h8300/kernel/signal.c
index 2d37418c04fb..635ece1c5d20 100644
--- a/arch/h8300/kernel/signal.c
+++ b/arch/h8300/kernel/signal.c
@@ -129,9 +129,9 @@ struct rt_sigframe
129} __attribute__((aligned(2),packed)); 129} __attribute__((aligned(2),packed));
130 130
131static inline int 131static inline int
132restore_sigcontext(struct pt_regs *regs, struct sigcontext *usc, 132restore_sigcontext(struct sigcontext *usc, int *pd0)
133 int *pd0)
134{ 133{
134 struct pt_regs *regs = current_pt_regs();
135 int err = 0; 135 int err = 0;
136 unsigned int ccr; 136 unsigned int ccr;
137 unsigned int usp; 137 unsigned int usp;
@@ -160,9 +160,8 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *usc,
160 return err; 160 return err;
161} 161}
162 162
163asmlinkage int do_sigreturn(unsigned long __unused,...) 163asmlinkage int sys_sigreturn(void)
164{ 164{
165 struct pt_regs *regs = (struct pt_regs *) (&__unused - 1);
166 unsigned long usp = rdusp(); 165 unsigned long usp = rdusp();
167 struct sigframe *frame = (struct sigframe *)(usp - 4); 166 struct sigframe *frame = (struct sigframe *)(usp - 4);
168 sigset_t set; 167 sigset_t set;
@@ -178,7 +177,7 @@ asmlinkage int do_sigreturn(unsigned long __unused,...)
178 177
179 set_current_blocked(&set); 178 set_current_blocked(&set);
180 179
181 if (restore_sigcontext(regs, &frame->sc, &er0)) 180 if (restore_sigcontext(&frame->sc, &er0))
182 goto badframe; 181 goto badframe;
183 return er0; 182 return er0;
184 183
@@ -187,9 +186,8 @@ badframe:
187 return 0; 186 return 0;
188} 187}
189 188
190asmlinkage int do_rt_sigreturn(unsigned long __unused,...) 189asmlinkage int sys_rt_sigreturn(void)
191{ 190{
192 struct pt_regs *regs = (struct pt_regs *) &__unused;
193 unsigned long usp = rdusp(); 191 unsigned long usp = rdusp();
194 struct rt_sigframe *frame = (struct rt_sigframe *)(usp - 4); 192 struct rt_sigframe *frame = (struct rt_sigframe *)(usp - 4);
195 sigset_t set; 193 sigset_t set;
@@ -202,7 +200,7 @@ asmlinkage int do_rt_sigreturn(unsigned long __unused,...)
202 200
203 set_current_blocked(&set); 201 set_current_blocked(&set);
204 202
205 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &er0)) 203 if (restore_sigcontext(&frame->uc.uc_mcontext, &er0))
206 goto badframe; 204 goto badframe;
207 205
208 if (restore_altstack(&frame->uc.uc_stack)) 206 if (restore_altstack(&frame->uc.uc_stack))
diff --git a/arch/h8300/kernel/syscalls.S b/arch/h8300/kernel/syscalls.S
index b74dd0ade58d..5c2168fb9b9e 100644
--- a/arch/h8300/kernel/syscalls.S
+++ b/arch/h8300/kernel/syscalls.S
@@ -334,18 +334,3 @@ SYMBOL_NAME_LABEL(sys_call_table)
334 .long SYMBOL_NAME(sys_getcpu) 334 .long SYMBOL_NAME(sys_getcpu)
335 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_pwait */ 335 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_pwait */
336 .long SYMBOL_NAME(sys_setns) /* 320 */ 336 .long SYMBOL_NAME(sys_setns) /* 320 */
337
338 .macro call_sp addr
339 mov.l #SYMBOL_NAME(\addr),er6
340 bra SYMBOL_NAME(syscall_trampoline):8
341 .endm
342
343SYMBOL_NAME_LABEL(sys_sigreturn)
344 call_sp do_sigreturn
345
346SYMBOL_NAME_LABEL(sys_rt_sigreturn)
347 call_sp do_rt_sigreturn
348
349SYMBOL_NAME_LABEL(syscall_trampoline)
350 mov.l sp,er0
351 jmp @er6