Merge branch 'master' into signal-dev
[lunaix-os.git] / lunaix-os / kernel / sched.c
index e7bcd9a6d3fc5fb3a7e8b5577e9592f4ab8f8a1c..026fb515a8dbfbc34410e868de18ccad40b7b308 100644 (file)
@@ -1,12 +1,14 @@
 #include <arch/x86/interrupts.h>
 #include <arch/x86/tss.h>
+
 #include <hal/apic.h>
 #include <hal/cpu.h>
+
 #include <lunaix/mm/kalloc.h>
 #include <lunaix/mm/vmm.h>
 #include <lunaix/process.h>
 #include <lunaix/sched.h>
-
+#include <lunaix/signal.h>
 #include <lunaix/spike.h>
 #include <lunaix/status.h>
 #include <lunaix/syscall.h>
@@ -58,9 +60,11 @@ run(struct proc_info* proc)
 
     apic_done_servicing();
 
-    asm volatile("pushl %0\n"
+    signal_dispatch();
+
+    asm volatile("movl %0, %%eax\n"
                  "jmp soft_iret\n" ::"r"(&__current->intr_ctx)
-                 : "memory");
+                 : "eax", "memory");
 }
 
 void