aboutsummaryrefslogtreecommitdiff
path: root/kernel/l0/context_switch.s
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/l0/context_switch.s')
-rw-r--r--kernel/l0/context_switch.s58
1 files changed, 0 insertions, 58 deletions
diff --git a/kernel/l0/context_switch.s b/kernel/l0/context_switch.s
deleted file mode 100644
index 6738a03..0000000
--- a/kernel/l0/context_switch.s
+++ /dev/null
@@ -1,58 +0,0 @@
-[EXTERN kernel_stack_top]
-[EXTERN run_scheduler]
-
-[GLOBAL save_context_and_enter_scheduler]
-; void save_context_and_enter_scheduler(struct saved_context *ctx);
-save_context_and_enter_scheduler:
- pushf
- cli
- pusha ; Pushes edi,esi,ebp,esp,ebx,edx,ecx,eax
-
- mov eax, cr3
- push eax
-
- mov eax, [esp+44] ; get address of saved_context structure
- mov [eax], esp ; save esp
- mov dword [eax+4], resume_saved_context ; save eip
-
- mov esp, kernel_stack_top
- jmp run_scheduler
-
-resume_saved_context:
- pop eax
- mov cr3, eax
-
- popa
- popf
- ret
-
-[GLOBAL irq0_save_context_and_enter_scheduler]
-; meant to be called on IRQ0
-; general registers already saved by IRQ handler stub
-; flags already saved by interruption and interruptions disabled
-; only saves CR3
-irq0_save_context_and_enter_scheduler:
- mov eax, cr3
- push eax
-
- mov eax, [esp+8] ; get address of saved_context structure
- mov [eax], esp ; save esp
- mov dword [eax+4], resume_saved_irq0_context ; save eip
-
- mov esp, kernel_stack_top
- jmp run_scheduler
-
-resume_saved_irq0_context:
- pop eax
- mov cr3, eax
- ret
-
-
-[GLOBAL resume_context]
-resume_context:
- mov eax, [esp+4] ; get address of saved context
- mov esp, [eax] ; resume esp
- mov ecx, [eax+4] ; jump to specified eip
- jmp ecx
-
-; vim: set ts=4 sw=4 tw=0 noet :