diff options
author | Ian Moffett <ian@osmora.org> | 2024-07-02 21:19:49 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-07-02 21:25:53 -0400 |
commit | 2d7bc823503167276c6d3c40500c3055d4f38938 (patch) | |
tree | 2971c86e108f5afa1c622afa511a289d12e7a3e6 /sys/kern | |
parent | 52760e9c5e677b76c81e921bbab95da26478f425 (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.c | 4 |
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); } |