aboutsummaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-07-02 21:19:49 -0400
committerIan Moffett <ian@osmora.org>2024-07-02 21:25:53 -0400
commit2d7bc823503167276c6d3c40500c3055d4f38938 (patch)
tree2971c86e108f5afa1c622afa511a289d12e7a3e6 /sys/kern
parent52760e9c5e677b76c81e921bbab95da26478f425 (diff)
kernel/amd64: Handle the user GS segment register
This commit introduces usage of swapgs to switch out the GS register with the user GS register. An md_td_kick() function is also introduced to start up user threads. The this_cpu() function uses the GS register to read the current CPU structure using a new "self" field. Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_exec.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index b21404b..7825448 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -98,11 +98,11 @@ execve(struct proc *td, const struct execve_args *args)
setregs(td, &prog, stack_top);
/*
- * Done, reset flags and yield
+ * Done, reset flags and start the user thread.
*
* XXX: PROC_EXEC is unset by the scheduler so it
* can properly start the new exec'd program.
*/
td->flags &= ~PROC_INEXEC;
- sched_enter();
+ md_td_kick(td);
}