aboutsummaryrefslogtreecommitdiffstats
path: root/arch/unicore32/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/unicore32/kernel/entry.S')
-rw-r--r--arch/unicore32/kernel/entry.S28
1 files changed, 21 insertions, 7 deletions
diff --git a/arch/unicore32/kernel/entry.S b/arch/unicore32/kernel/entry.S
index 581630d9144..00a259f9819 100644
--- a/arch/unicore32/kernel/entry.S
+++ b/arch/unicore32/kernel/entry.S
@@ -544,6 +544,8 @@ fast_work_pending:
544work_pending: 544work_pending:
545 cand.a r1, #_TIF_NEED_RESCHED 545 cand.a r1, #_TIF_NEED_RESCHED
546 bne work_resched 546 bne work_resched
547 cand.a r1, #_TIF_SIGPENDING|_TIF_NOTIFY_RESUME
548 beq no_work_pending
547 mov r0, sp @ 'regs' 549 mov r0, sp @ 'regs'
548 mov r2, why @ 'syscall' 550 mov r2, why @ 'syscall'
549 cand.a r1, #_TIF_SIGPENDING @ delivering a signal? 551 cand.a r1, #_TIF_SIGPENDING @ delivering a signal?
@@ -573,16 +575,17 @@ ENDPROC(ret_to_user)
573 */ 575 */
574ENTRY(ret_from_fork) 576ENTRY(ret_from_fork)
575 b.l schedule_tail 577 b.l schedule_tail
578 get_thread_info tsk
579 ldw r1, [tsk+], #TI_FLAGS @ check for syscall tracing
580 mov why, #1
581 cand.a r1, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?
582 beq ret_slow_syscall
583 mov r1, sp
584 mov r0, #1 @ trace exit [IP = 1]
585 b.l syscall_trace
576 b ret_slow_syscall 586 b ret_slow_syscall
577ENDPROC(ret_from_fork) 587ENDPROC(ret_from_fork)
578 588
579ENTRY(ret_from_kernel_thread)
580 b.l schedule_tail
581 mov r0, r5
582 adr lr, ret_slow_syscall
583 mov pc, r4
584ENDPROC(ret_from_kernel_thread)
585
586/*============================================================================= 589/*=============================================================================
587 * SWI handler 590 * SWI handler
588 *----------------------------------------------------------------------------- 591 *-----------------------------------------------------------------------------
@@ -668,6 +671,17 @@ __cr_alignment:
668#endif 671#endif
669 .ltorg 672 .ltorg
670 673
674ENTRY(sys_execve)
675 add r3, sp, #S_OFF
676 b __sys_execve
677ENDPROC(sys_execve)
678
679ENTRY(sys_clone)
680 add ip, sp, #S_OFF
681 stw ip, [sp+], #4
682 b __sys_clone
683ENDPROC(sys_clone)
684
671ENTRY(sys_rt_sigreturn) 685ENTRY(sys_rt_sigreturn)
672 add r0, sp, #S_OFF 686 add r0, sp, #S_OFF
673 mov why, #0 @ prevent syscall restart handling 687 mov why, #0 @ prevent syscall restart handling