forked from KolibriOS/kolibrios
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:
parent
17945ca19c
commit
0674683a36
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user