Kernel: Sleep now actually sleeps and allows idling

This commit is contained in:
Bananymous
2023-02-19 17:53:29 +02:00
parent 66a4b69a29
commit 1bd8b0fe5c
10 changed files with 101 additions and 72 deletions

View File

@@ -129,7 +129,9 @@ found:
else
dprintln("no handler for irq 0x{2H}\n", irq);
InterruptController::get().eoi(irq);
// NOTE: Scheduler sends PIT eoi's
if (irq != PIT_IRQ)
InterruptController::get().eoi(irq);
}
extern "C" void handle_irq_common();

View File

@@ -11,12 +11,11 @@ exit_thread_trampoline:
pushl %eax
ret
# void start_thread(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t rsp, uint32_t rbp, uint32_t rip)
# void start_thread(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t rsp, uint32_t rip)
.global start_thread
start_thread:
movl %esp, %eax
movl 28(%eax), %ecx
movl 24(%eax), %ebp
movl 24(%eax), %ecx
movl 20(%eax), %esp
pushl 16(%eax)
@@ -25,14 +24,15 @@ start_thread:
pushl 4(%eax)
pushl $exit_thread_trampoline
movl $0, %ebp
sti
jmp *%ecx
# void continue_thread(uint32_t rsp, uint32_t rbp, uint32_t rip)
# void continue_thread(uint32_t rsp, uint32_t rip)
.global continue_thread
continue_thread:
movl 12(%esp), %ecx
movl 8(%esp), %ebp
movl 8(%esp), %ecx
movl 4(%esp), %esp
movl $0, %eax
jmp *%ecx