aboutsummaryrefslogtreecommitdiffstats
path: root/arch/hexagon/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/hexagon/kernel/traps.c')
-rw-r--r--arch/hexagon/kernel/traps.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c
index be5e2dd9c9d3..d59ee62f772d 100644
--- a/arch/hexagon/kernel/traps.c
+++ b/arch/hexagon/kernel/traps.c
@@ -356,7 +356,6 @@ long sys_syscall(void)
356 356
357void do_trap0(struct pt_regs *regs) 357void do_trap0(struct pt_regs *regs)
358{ 358{
359 unsigned long syscallret = 0;
360 syscall_fn syscall; 359 syscall_fn syscall;
361 360
362 switch (pt_cause(regs)) { 361 switch (pt_cause(regs)) {
@@ -396,21 +395,11 @@ void do_trap0(struct pt_regs *regs)
396 } else { 395 } else {
397 syscall = (syscall_fn) 396 syscall = (syscall_fn)
398 (sys_call_table[regs->syscall_nr]); 397 (sys_call_table[regs->syscall_nr]);
399 syscallret = syscall(regs->r00, regs->r01, 398 regs->r00 = syscall(regs->r00, regs->r01,
400 regs->r02, regs->r03, 399 regs->r02, regs->r03,
401 regs->r04, regs->r05); 400 regs->r04, regs->r05);
402 } 401 }
403 402
404 /*
405 * If it was a sigreturn system call, don't overwrite
406 * r0 value in stack frame with return value.
407 *
408 * __NR_sigreturn doesn't seem to exist in new unistd.h
409 */
410
411 if (regs->syscall_nr != __NR_rt_sigreturn)
412 regs->r00 = syscallret;
413
414 /* allow strace to get the syscall return state */ 403 /* allow strace to get the syscall return state */
415 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACE))) 404 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACE)))
416 tracehook_report_syscall_exit(regs, 0); 405 tracehook_report_syscall_exit(regs, 0);