From bec0e457ad346783be7f84be71bb0eddc881847c Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Tue, 20 May 2025 13:46:07 +0200 Subject: wip: feat(kernel): Add stub for ring-3 switch on the AP side of the scheduling system. why? - To let the code run in user mode, as specified in the design. next: - Debug the #06 interrupt when switching to task. Signed-off-by: Amlal El Mahrouss --- dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc | 6 ++---- dev/kernel/HALKit/AMD64/HalCommonAPI.asm | 11 ++++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'dev/kernel/HALKit') diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc index 78db9b16..46ad8fd6 100644 --- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -112,12 +112,10 @@ EXTERN_C BOOL mp_register_process(HAL::StackFramePtr stack_frame, ProcessID thrd kHWThread[thrdid].mFramePtr = stack_frame; kHWThread[thrdid].mThreadID = thrdid; - STATIC HardwareTimer timer{rtl_milliseconds(1000)}; - - timer.Wait(); - HardwareThreadScheduler::The()[thrdid].Leak()->Busy(NO); + sched_jump_to_task(stack_frame); + return YES; } diff --git a/dev/kernel/HALKit/AMD64/HalCommonAPI.asm b/dev/kernel/HALKit/AMD64/HalCommonAPI.asm index a04aeb95..230f50ed 100644 --- a/dev/kernel/HALKit/AMD64/HalCommonAPI.asm +++ b/dev/kernel/HALKit/AMD64/HalCommonAPI.asm @@ -84,11 +84,16 @@ section .text global sched_jump_to_task -;; Jump to the task from its stack frame. sched_jump_to_task: push rbp mov rbp, rsp + mov ax, 0x20 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov r8, [rcx + 0x10] mov r9, [rcx + 0x18] mov r10, [rcx + 0x20] @@ -101,11 +106,11 @@ sched_jump_to_task: mov rax, [rcx + 0x00] mov rsp, [rcx + 0x08] - jmp rax + o64 sysret int 3 ;; Never continue here. global sched_idle_task sched_idle_task: jmp $ - ret \ No newline at end of file + ret -- cgit v1.2.3