Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3761 → Rev 3762

/kernel/trunk/blkdev/hd_drv.inc
704,6 → 704,9
pop edx eax
ret
;-----------------------------------------------------------------------------
irq14_num equ byte 14
irq15_num equ byte 15
;-----------------------------------------------------------------------------
align 4
wait_for_sector_dma_ide0:
push eax
713,12 → 716,14
align 4
.wait:
call change_task
cmp [irq14_func], hdd_irq14
cmp [IDE_common_irq_param], irq14_num
jnz .done
 
call check_hd_wait_timeout
cmp [hd_error], 0
jz .wait
mov [irq14_func], hdd_irq_null
 
mov [IDE_common_irq_param], 0
mov dx, [IDEContrRegsBaseAddr]
mov al, 0
out dx, al
736,12 → 741,14
align 4
.wait:
call change_task
cmp [irq15_func], hdd_irq15
cmp [IDE_common_irq_param], irq15_num
jnz .done
 
call check_hd_wait_timeout
cmp [hd_error], 0
jz .wait
mov [irq15_func], hdd_irq_null
 
mov [IDE_common_irq_param], 0
mov dx, [IDEContrRegsBaseAddr]
add dx, 8
mov al, 0
761,8 → 768,7
 
dma_cur_sector dd not 40h
dma_hdpos dd 0
irq14_func dd hdd_irq_null
irq15_func dd hdd_irq_null
IDE_common_irq_param db 0
endg
;-----------------------------------------------------------------------------
uglobal
779,32 → 785,34
endg
;-----------------------------------------------------------------------------
align 4
hdd_irq14:
IDE_common_irq_handler:
pushfd
cli
pushad
mov [irq14_func], hdd_irq_null
 
xor ebx, ebx
mov eax, IDE_common_irq_param
cmp [eax], irq15_num
mov [eax], ebx
je @f
;--------------------------------------
mov dx, [IDEContrRegsBaseAddr]
mov al, 0
out dx, al
popad
popfd
jmp .end
;--------------------------------------
align 4
hdd_irq_null:
ret
;-----------------------------------------------------------------------------
align 4
hdd_irq15:
pushfd
cli
pushad
mov [irq15_func], hdd_irq_null
@@:
mov dx, [IDEContrRegsBaseAddr]
add dx, 8
mov al, 0
out dx, al
;--------------------------------------
align 4
.end:
popad
popfd
mov al, 1
ret
;-----------------------------------------------------------------------------
align 4
956,10 → 964,11
mov eax, [hd_address_table]
cmp [hdbase], eax ; 0x1F0
jnz .ide1
mov [irq14_func], hdd_irq14
 
mov [IDE_common_irq_param], irq14_num
jmp @f
.ide1:
mov [irq15_func], hdd_irq15
mov [IDE_common_irq_param], irq15_num
@@:
popfd
mov eax, [hd_address_table]
1113,10 → 1122,11
mov eax, [hd_address_table]
cmp [hdbase], eax ; 0x1F0
jnz .ide1
mov [irq14_func], hdd_irq14
 
mov [IDE_common_irq_param], irq14_num
jmp @f
.ide1:
mov [irq15_func], hdd_irq15
mov [IDE_common_irq_param], irq15_num
@@:
popfd
mov [dma_cur_sector], not 0x40
1134,6 → 1144,7
ret
;-----------------------------------------------------------------------------
uglobal
IDE_Interrupt dw ?
IDEContrRegsBaseAddr dw ?
IDEContrProgrammingInterface dw ?
IDE_BAR0_val dw ?