forked from KolibriOS/kolibrios
* Reverted previous revision because it was my mistake
* Fixed V86 IRQ handling broken in rev. 769 git-svn-id: svn://kolibrios.org@788 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c4be8acc8c
commit
890388b50c
@ -53,7 +53,7 @@ iglobal
|
|||||||
dd except_16, e17,e18, except_19
|
dd except_16, e17,e18, except_19
|
||||||
times 12 dd unknown_interrupt
|
times 12 dd unknown_interrupt
|
||||||
|
|
||||||
dd irq0, irq_serv.irq_1, p_irq2
|
dd irq0, irq_serv.irq_1, irq_serv.irq_2
|
||||||
if USE_COM_IRQ
|
if USE_COM_IRQ
|
||||||
dd irq_serv.irq_3, irq_serv.irq_4
|
dd irq_serv.irq_3, irq_serv.irq_4
|
||||||
else
|
else
|
||||||
@ -183,20 +183,12 @@ macro irqh [num]
|
|||||||
{
|
{
|
||||||
forward
|
forward
|
||||||
p_irq#num :
|
p_irq#num :
|
||||||
save_ring3_context
|
|
||||||
mov edi, num
|
mov edi, num
|
||||||
jmp irq_c
|
jmp irqhandler
|
||||||
}
|
}
|
||||||
|
|
||||||
irqh 2,3,4,5,7,8,9,10,11
|
irqh 2,3,4,5,7,8,9,10,11
|
||||||
|
|
||||||
irq_c:
|
|
||||||
mov ax, app_data
|
|
||||||
mov ds, ax
|
|
||||||
mov es, ax
|
|
||||||
call irqhandler
|
|
||||||
restore_ring3_context
|
|
||||||
iret
|
|
||||||
|
|
||||||
p_irq6:
|
p_irq6:
|
||||||
save_ring3_context
|
save_ring3_context
|
||||||
@ -265,9 +257,6 @@ irqD:
|
|||||||
|
|
||||||
|
|
||||||
irqhandler:
|
irqhandler:
|
||||||
cmp [v86_irqhooks+edi*8], 0
|
|
||||||
jnz v86_irq2
|
|
||||||
|
|
||||||
|
|
||||||
mov esi,edi ; 1
|
mov esi,edi ; 1
|
||||||
shl esi,6 ; 1
|
shl esi,6 ; 1
|
||||||
|
@ -846,18 +846,13 @@ end if
|
|||||||
v86_irq:
|
v86_irq:
|
||||||
; push irq/pushad/jmp v86_irq
|
; push irq/pushad/jmp v86_irq
|
||||||
; eax = irq
|
; eax = irq
|
||||||
mov ebx, eax
|
|
||||||
lea esi, [esp+18h]
|
lea esi, [esp+18h]
|
||||||
lea edi, [esi+4]
|
lea edi, [esi+4]
|
||||||
mov ecx, 8
|
mov ecx, 8
|
||||||
std
|
std
|
||||||
rep movsd
|
rep movsd
|
||||||
cld
|
cld
|
||||||
mov edi, ebx
|
mov edi, eax
|
||||||
|
|
||||||
v86_irq2:
|
|
||||||
; pushad/call v86_irq2
|
|
||||||
; edi = irq
|
|
||||||
pop eax
|
pop eax
|
||||||
mov esi, [v86_irqhooks+edi*8] ; get VM handle
|
mov esi, [v86_irqhooks+edi*8] ; get VM handle
|
||||||
mov eax, [esi+V86_machine.pagedir]
|
mov eax, [esi+V86_machine.pagedir]
|
||||||
|
Loading…
Reference in New Issue
Block a user