correction for r3505: exclude IRQ6, 14, 15 and keyboard handler

git-svn-id: svn://kolibrios.org@3509 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
CleverMouse 2013-05-15 18:17:49 +00:00
parent 17945ca19c
commit 0674683a36

View File

@ -217,6 +217,14 @@ align 16
; Note: this still isn't 100% correct, because two IRQs can fire simultaneously, ; 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 ; the better way would be to find the correct IRQ, but I don't know how to do
; this in that case. ; 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 push ebp
xor ebp, ebp xor ebp, ebp
.try_other_irqs: .try_other_irqs:
@ -230,6 +238,9 @@ align 16
je .try_next_irq je .try_next_irq
cmp [ebx+IRQH.num_ints], 0 cmp [ebx+IRQH.num_ints], 0
jne .try_next_irq jne .try_next_irq
; keyboard handler acknowledges everything
cmp [ebx+IRQH.handler], irq1
jz .try_next_irq
push [ebx+IRQH.data] push [ebx+IRQH.data]
call [ebx+IRQH.handler] call [ebx+IRQH.handler]
pop ecx pop ecx
@ -241,6 +252,7 @@ align 16
jb .try_other_irqs jb .try_other_irqs
pop ebp pop ebp
.fail:
inc [irq_failed+ebp*4] inc [irq_failed+ebp*4]
.exit: .exit:
mov [check_idle_semaphore], 5 mov [check_idle_semaphore], 5