From 0674683a360149f7dd771540a7353159b6665f38 Mon Sep 17 00:00:00 2001 From: CleverMouse Date: Wed, 15 May 2013 18:17:49 +0000 Subject: [PATCH] correction for r3505: exclude IRQ6, 14, 15 and keyboard handler git-svn-id: svn://kolibrios.org@3509 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/core/irq.inc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kernel/trunk/core/irq.inc b/kernel/trunk/core/irq.inc index 254f0650e0..6296a131ef 100644 --- a/kernel/trunk/core/irq.inc +++ b/kernel/trunk/core/irq.inc @@ -217,6 +217,14 @@ align 16 ; Note: this still isn't 100% correct, because two IRQs can fire simultaneously, ; the better way would be to find the correct IRQ, but I don't know how to do ; this in that case. +; Also, [fdc_irq_func], [irq14_func], [irq15_func] could process interrupt +; but do not return whether they did it, so just ignore IRQs 6, 14, 15. + cmp ebp, 6 + jz .fail + cmp ebp, 14 + jz .fail + cmp ebp, 15 + jz .fail push ebp xor ebp, ebp .try_other_irqs: @@ -230,6 +238,9 @@ align 16 je .try_next_irq cmp [ebx+IRQH.num_ints], 0 jne .try_next_irq +; keyboard handler acknowledges everything + cmp [ebx+IRQH.handler], irq1 + jz .try_next_irq push [ebx+IRQH.data] call [ebx+IRQH.handler] pop ecx @@ -241,6 +252,7 @@ align 16 jb .try_other_irqs pop ebp +.fail: inc [irq_failed+ebp*4] .exit: mov [check_idle_semaphore], 5