[−][src]Function sunrise_kernel::i386::process_switch::jump_to_entrypoint
fn jump_to_entrypoint(
ep: usize,
userspace_stack_ptr: usize,
arg1: usize,
arg2: usize
) -> !
Jumps to Userspace, and run a userspace program.
This function is called on the first schedule of a process or thread, after all the process_switch mechanics is over, and the thread is good to go.
It jumps to ring 3 by pushing the given ep
and userspace_stack_ptr
on the KernelStack,
and executing an iret
.
Just before doing the iret
, it clears all general-purpose registers.
This way, just after the iret
, cpu will be in ring 3, witl all of its registers cleared,
$eip
pointing to ep
, and $esp
pointing to userspace_stack_ptr
.