Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98edfab4 authored by Vineet Gupta's avatar Vineet Gupta
Browse files

ARC: add some more comments to ret_from_fork

parent 4c86231c
Loading
Loading
Loading
Loading
+9 −5
Original line number Original line Diff line number Diff line
@@ -736,16 +736,20 @@ ENTRY(ret_from_fork)
	; put last task in scheduler queue
	; put last task in scheduler queue
	bl   @schedule_tail
	bl   @schedule_tail


	; If kernel thread, jump to its entry-point
	ld   r9, [sp, PT_status32]
	ld   r9, [sp, PT_status32]
	brne r9, 0, 1f
	brne r9, 0, 1f


	jl.d [r14]
	jl.d [r14]		; kernel thread entry point
	mov  r0, r13		; arg to payload
	mov  r0, r13		; (see PF_KTHREAD block in copy_thread)


1:
1:
	; special case of kernel_thread entry point returning back due to
	; Return to user space
	; kernel_execve() - pretend return from syscall to ret to userland
	; 1. Any forked task (Reach here via BRne above)
	; 2. First ever init task (Reach here via return from JL above)
	;    This is the historic "kernel_execve" use-case, to return to init
	;    user mode, in a round about way since that is always done from
	;    a kernel thread which is executed via JL above but always returns
	;    out whenever kernel_execve (now inline do_fork()) is involved
	b    ret_from_exception
	b    ret_from_exception
END(ret_from_fork)
END(ret_from_fork)