forked from Bananymous/banan-os
Kernel: Sleep now actually sleeps and allows idling
This commit is contained in:
@@ -126,7 +126,9 @@ namespace IDT
|
||||
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);
|
||||
}
|
||||
|
||||
static void flush_idt()
|
||||
|
||||
@@ -8,20 +8,18 @@ exit_thread_trampoline:
|
||||
movq 8(%rsp), %rdi
|
||||
ret
|
||||
|
||||
# void start_thread(uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t rsp, uint64_t rbp, uint64_t rip)
|
||||
# void start_thread(uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t rsp, uint64_t rip)
|
||||
.global start_thread
|
||||
start_thread:
|
||||
movq 8(%rsp), %rcx
|
||||
movq %r8, %rsp
|
||||
movq %r9, %rbp
|
||||
movq $0, %rbp
|
||||
pushq $exit_thread_trampoline
|
||||
sti
|
||||
jmp *%rcx
|
||||
jmp *%r9
|
||||
|
||||
# void continue_thread(uint64_t rsp, uint64_t rbp, uint64_t rip)
|
||||
# void continue_thread(uint64_t rsp, uint64_t rip)
|
||||
.global continue_thread
|
||||
continue_thread:
|
||||
movq %rdi, %rsp
|
||||
movq %rsi, %rbp
|
||||
movq $0, %rax
|
||||
jmp *%rdx
|
||||
jmp *%rsi
|
||||
Reference in New Issue
Block a user