aboutsummaryrefslogtreecommitdiff
path: root/sys/arch/amd64/amd64
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-03-13 21:40:06 -0400
committerIan Moffett <ian@osmora.org>2024-03-13 21:48:21 -0400
commit39d4aa3a106f898d09b98e41ef44fb4891eda1ce (patch)
treec4c94111dbd7e511877e692a693c8a2be9cc041f /sys/arch/amd64/amd64
parentfc9c7bab5bb64dd2242e9e9dff98060d64af2a32 (diff)
kernel/amd64: machdep: Add context switch helper
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/arch/amd64/amd64')
-rw-r--r--sys/arch/amd64/amd64/machdep.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/arch/amd64/amd64/machdep.c b/sys/arch/amd64/amd64/machdep.c
index 0789f5a..5327189 100644
--- a/sys/arch/amd64/amd64/machdep.c
+++ b/sys/arch/amd64/amd64/machdep.c
@@ -179,6 +179,19 @@ processor_init_pcb(struct proc *proc)
amd64_fxsave(pcb->fpu_state);
return 0;
}
+
+void
+processor_switch_to(struct proc *old_td, struct proc *new_td)
+{
+ struct pcb *old_pcb = (old_td != NULL) ? &old_td->pcb : NULL;
+ struct pcb *new_pcb = &new_td->pcb;
+
+ if (old_pcb != NULL) {
+ amd64_fxsave(old_pcb->fpu_state);
+ }
+ amd64_fxrstor(new_pcb->fpu_state);
+}
+
void
processor_init(void)
{