diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2013-01-18 15:12:18 +0530 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2013-02-11 20:00:38 +0530 |
commit | bf90e1eab682dcb79b7765989fb65835ce9d6165 (patch) | |
tree | cb1bb4364862d878e1d361d371f8392d08f606d7 /arch/arc/kernel/entry.S | |
parent | 4adeefe161a74369e44cc8e663f240ece0470dc3 (diff) | |
download | talos-op-linux-bf90e1eab682dcb79b7765989fb65835ce9d6165.tar.gz talos-op-linux-bf90e1eab682dcb79b7765989fb65835ce9d6165.zip |
ARC: Process-creation/scheduling/idle-loop
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/arc/kernel/entry.S')
-rw-r--r-- | arch/arc/kernel/entry.S | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S index 0b0a190547a9..ed08ac14fbc4 100644 --- a/arch/arc/kernel/entry.S +++ b/arch/arc/kernel/entry.S @@ -566,8 +566,19 @@ ARC_ENTRY ret_from_fork ; when the forked child comes here from the __switch_to function ; r0 has the last task pointer. ; put last task in scheduler queue - bl @schedule_tail - b @ret_from_exception + bl @schedule_tail + + ; If kernel thread, jump to it's entry-point + ld r9, [sp, PT_status32] + brne r9, 0, 1f + + jl.d [r14] + mov r0, r13 ; arg to payload + +1: + ; special case of kernel_thread entry point returning back due to + ; kernel_execve() - pretend return from syscall to ret to userland + b ret_from_exception ARC_EXIT ret_from_fork ;################### Special Sys Call Wrappers ########################## |