From d8aca3ff2501f9a77e22e5afb7a30380aed205af Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Fri, 16 Oct 2026 16:42:22 -0400 Subject: remove explicit framebuffer in kernel. reduce locking in syscalls --- arch/x86_64/proc/scheduler.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'arch/x86_64/proc/scheduler.c') diff --git a/arch/x86_64/proc/scheduler.c b/arch/x86_64/proc/scheduler.c index 49a0c4d..6c748c7 100644 --- a/arch/x86_64/proc/scheduler.c +++ b/arch/x86_64/proc/scheduler.c @@ -1,5 +1,7 @@ #include "proc/scheduler.h" #include "arch/x86_64/hal/gdt.h" +#include "arch/x86_64/hal/obj.h" +#include "lib/printf.h" #include "lib/string.h" #include "process.h" #include "../hal/smp.h" @@ -12,10 +14,15 @@ _scheduler_switch_pcb_arch(pcb_t *target) proc->syscall_page = target->interrupt_page; proc->interrupt_page = target->interrupt_page; + proc->tss.rsp[0] = __interrupt_stack + 0xFF8; + if(target->iopb) { proc->tss.iopb = sizeof(struct tss); jove_owned_obj_t *iopb_obj = obj_take(target->iopb); - memcpy(proc->iopb, obj_deref(iopb_obj), sizeof(proc->iopb)); + if(obj_gettype(iopb_obj) != JOVE_OBJ_IOPB) { + memcpy(proc->iopb, obj_deref(iopb_obj), sizeof(proc->iopb)); + } + obj_release(iopb_obj); }else{ proc->tss.iopb = 0xff; } -- cgit v1.2.3