Fixed bug with sending EOI in change_task procedure (it shouldn't send it).
git-svn-id: svn://kolibrios.org@100 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
ad6d923147
commit
d925b54ad5
@ -92,9 +92,14 @@ irq0:
|
|||||||
mov word [far_jump.sel], bx ; selector
|
mov word [far_jump.sel], bx ; selector
|
||||||
mov dword [far_jump.offs], eax ; offset
|
mov dword [far_jump.offs], eax ; offset
|
||||||
|
|
||||||
|
cmp [irq0needeoi],byte 0
|
||||||
|
mov [irq0needeoi],byte 1
|
||||||
|
jz .noeoi
|
||||||
|
|
||||||
mov al,0x20 ; send End Of Interrupt signal
|
mov al,0x20 ; send End Of Interrupt signal
|
||||||
mov dx,0x20
|
mov dx,0x20
|
||||||
out dx,al
|
out dx,al
|
||||||
|
.noeoi:
|
||||||
|
|
||||||
cmp [0xffff],byte 0
|
cmp [0xffff],byte 0
|
||||||
je .switch
|
je .switch
|
||||||
@ -120,16 +125,23 @@ uglobal
|
|||||||
prev_slot dd ?
|
prev_slot dd ?
|
||||||
event_sched dd ?
|
event_sched dd ?
|
||||||
endg
|
endg
|
||||||
|
iglobal
|
||||||
|
irq0needeoi db 1
|
||||||
|
endg
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
change_task:
|
change_task:
|
||||||
|
|
||||||
|
pushfd
|
||||||
|
cli
|
||||||
mov [0xffff],byte 2
|
mov [0xffff],byte 2
|
||||||
|
|
||||||
|
mov [irq0needeoi],byte 0
|
||||||
dec dword [timer_ticks] ; because irq0 will increase it
|
dec dword [timer_ticks] ; because irq0 will increase it
|
||||||
|
|
||||||
int 0x20 ; irq0 handler
|
int 0x20 ; irq0 handler
|
||||||
|
popfd
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user