forked from Bananymous/banan-os
Kernel: Sleep now actually sleeps and allows idling
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user