diff options
Diffstat (limited to 'arch/sh/kernel/cpu/sh5')
| -rw-r--r-- | arch/sh/kernel/cpu/sh5/entry.S | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/sh5/entry.S b/arch/sh/kernel/cpu/sh5/entry.S index 7e605b95592..0c8d0377d40 100644 --- a/arch/sh/kernel/cpu/sh5/entry.S +++ b/arch/sh/kernel/cpu/sh5/entry.S @@ -1228,6 +1228,25 @@ ret_from_fork:  	pta	ret_from_syscall, tr0  	blink	tr0, ZERO +.global	ret_from_kernel_thread +ret_from_kernel_thread: + +	movi	schedule_tail,r5 +	ori	r5, 1, r5 +	ptabs	r5, tr0 +	blink	tr0, LINK + +	ld.q	SP, FRAME_R(2), r2 +	ld.q	SP, FRAME_R(3), r3 +	ptabs	r3, tr0 +	blink	tr0, LINK + +	ld.q	SP, FRAME_S(FSPC), r2 +	addi	r2, 4, r2		/* Move PC, being pre-execution event */ +	st.q	SP, FRAME_S(FSPC), r2 +	pta	ret_from_syscall, tr0 +	blink	tr0, ZERO +  syscall_allowed:  	/* Use LINK to deflect the exit point, default is syscall_ret */  	pta	syscall_ret, tr0  |