From 81a8252db679351f5ba388b420519724c9c2c2be Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 4 Oct 2018 02:17:13 +0200 Subject: reverting userspace idea --- kernel/interrupts.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'kernel/interrupts.c') diff --git a/kernel/interrupts.c b/kernel/interrupts.c index 4aa9db3..94ed54a 100644 --- a/kernel/interrupts.c +++ b/kernel/interrupts.c @@ -68,23 +68,34 @@ uint32_t interrupt_handler(uint32_t esp, uint32_t irq) { uint32_t (*f)(uint32_t esp)=handlers[irq]; esp=f(esp); + scheduler_wake_worker(esp); apic_eoi(); + esp=scheduler_run(esp,-1); return esp; } - if(irq==INTERRUPT_APIC_TIMER) + if(irq==INTERRUPT_APIC_TIMER || irq==INTERRUPT_IPI) { - klog ("tick"); esp=scheduler_run(esp,-1); apic_eoi(); return esp; } + if(irq==INTERRUPT_SYSCALL) // do not EOI + { + uint32_t *stack; + stack=esp; + task_syscall(stack[11],stack[8],stack[10],stack[9]); //eax,ebx,ecx,edx + scheduler_wake_worker(esp); + esp=scheduler_run(esp,-1); + return esp; + } + kpanic("unhandled interrupt %d",irq); - uint32_t *stack; + /* if(handlers[irq]!=0) { //uint32_t (*f)(uint32_t esp)=handlers[irq]; @@ -132,6 +143,7 @@ uint32_t interrupt_handler(uint32_t esp, uint32_t irq) return esp; + */ } /** -- cgit v1.2.3