From 15f3911599a8d005edee46247470afe2a7a0b4aa Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Mon, 27 Feb 2023 01:59:33 +0100 Subject: almost done multitasking --- kernel/src/scheduler/switch.S | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'kernel/src/scheduler/switch.S') diff --git a/kernel/src/scheduler/switch.S b/kernel/src/scheduler/switch.S index 4d5dfb6..12593ec 100644 --- a/kernel/src/scheduler/switch.S +++ b/kernel/src/scheduler/switch.S @@ -1,10 +1,13 @@ #include "x86_64_regs.S" /* %rdi - irq's rsp */ -/* %rsi - task's rsp */ -.global save_context_to_rsp -save_context_to_rsp: - mov %rsi, %rsp +.global save_context_from_rsp +save_context_from_rsp: + push %rbp + mov %rsp, %rbp + + mov RSP_OFF(%rdi), %rsp + push SS_OFF(%rdi) push RSP_OFF(%rdi) push RFLAGS_OFF(%rdi) @@ -28,6 +31,12 @@ save_context_to_rsp: push R14_OFF(%rdi) push R15_OFF(%rdi) + mov %rsp, %rax + + mov %rbp, %rsp + pop %rbp + ret + /* %rdi - task's rsp */ .global restore_context_from_rsp restore_context_from_rsp: -- cgit v1.2.3