diff options
Diffstat (limited to 'arch/unicore32/kernel/entry.S')
| -rw-r--r-- | arch/unicore32/kernel/entry.S | 28 |
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: | |||
| 544 | work_pending: | 544 | work_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 | */ |
| 574 | ENTRY(ret_from_fork) | 576 | ENTRY(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 |
| 577 | ENDPROC(ret_from_fork) | 587 | ENDPROC(ret_from_fork) |
| 578 | 588 | ||
| 579 | ENTRY(ret_from_kernel_thread) | ||
| 580 | b.l schedule_tail | ||
| 581 | mov r0, r5 | ||
| 582 | adr lr, ret_slow_syscall | ||
| 583 | mov pc, r4 | ||
| 584 | ENDPROC(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 | ||
| 674 | ENTRY(sys_execve) | ||
| 675 | add r3, sp, #S_OFF | ||
| 676 | b __sys_execve | ||
| 677 | ENDPROC(sys_execve) | ||
| 678 | |||
| 679 | ENTRY(sys_clone) | ||
| 680 | add ip, sp, #S_OFF | ||
| 681 | stw ip, [sp+], #4 | ||
| 682 | b __sys_clone | ||
| 683 | ENDPROC(sys_clone) | ||
| 684 | |||
| 671 | ENTRY(sys_rt_sigreturn) | 685 | ENTRY(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 |
