Rev 388 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 388 | Rev 390 | ||
---|---|---|---|
Line 390... | Line 390... | ||
390 | ret |
390 | ret |
Line 391... | Line 391... | ||
391 | 391 | ||
Line 392... | Line 392... | ||
392 | save_hd_wait_timeout: |
392 | save_hd_wait_timeout: |
393 | 393 | ||
394 | push eax |
394 | push eax |
395 | mov eax,[timer_ticks];[0xfdf0] |
395 | mov eax,[timer_ticks] |
396 | add eax,300 ; 3 sec timeout |
396 | add eax,300 ; 3 sec timeout |
397 | mov [hd_wait_timeout],eax |
397 | mov [hd_wait_timeout],eax |
Line 398... | Line 398... | ||
398 | pop eax |
398 | pop eax |
399 | ret |
399 | ret |
Line 400... | Line 400... | ||
400 | 400 | ||
401 | align 4 |
401 | align 4 |
402 | check_hd_wait_timeout: |
402 | check_hd_wait_timeout: |
403 | 403 | ||
404 | push eax |
404 | push eax |
405 | mov eax,[hd_wait_timeout] |
405 | mov eax,[hd_wait_timeout] |
406 | cmp [timer_ticks], eax ;[0xfdf0],eax |
406 | cmp [timer_ticks], eax |
Line 421... | Line 421... | ||
421 | ; call clear_hd_cache |
421 | ; call clear_hd_cache |
422 | ; call clear_application_table_status |
422 | ; call clear_application_table_status |
423 | ; mov esi,hd_timeout_str |
423 | ; mov esi,hd_timeout_str |
424 | ; call sys_msg_board_str |
424 | ; call sys_msg_board_str |
425 | DEBUGF 1,"K : FS - HD timeout\n" |
425 | DEBUGF 1,"K : FS - HD timeout\n" |
426 | ; jmp $ |
426 | |
427 | mov [hd_error],1 |
427 | mov [hd_error],1 |
428 | pop eax |
428 | pop eax |
429 | ret |
429 | ret |
Line 430... | Line 430... | ||
430 | 430 | ||
Line 572... | Line 572... | ||
572 | 572 | ||
573 | iglobal |
573 | iglobal |
574 | align 4 |
574 | align 4 |
575 | ; note that IDE descriptor table must be 4-byte aligned and do not cross 4K boundary |
575 | ; note that IDE descriptor table must be 4-byte aligned and do not cross 4K boundary |
576 | IDE_descriptor_table: |
576 | IDE_descriptor_table: |
577 | dd OS_BASE+284000h |
577 | dd 0x284000 |
578 | dw 2000h |
578 | dw 0x2000 |
Line 579... | Line 579... | ||
579 | dw 8000h |
579 | dw 0x8000 |
580 | 580 | ||
581 | dma_cur_sector dd not 40h |
581 | dma_cur_sector dd not 40h |
582 | irq14_func dd hdd_irq_null |
582 | irq14_func dd hdd_irq_null |
Line 615... | Line 615... | ||
615 | mov [dma_process], eax |
615 | mov [dma_process], eax |
616 | mov eax, [TASK_BASE] |
616 | mov eax, [TASK_BASE] |
617 | mov [dma_slot_ptr], eax |
617 | mov [dma_slot_ptr], eax |
618 | mov [CURRENT_TASK], ebx |
618 | mov [CURRENT_TASK], ebx |
619 | mov [TASK_BASE], edi |
619 | mov [TASK_BASE], edi |
620 | mov byte [0xFFFF], 1 |
620 | mov byte [DONT_SWITCH], 1 |
621 | call do_change_task |
621 | call do_change_task |
622 | .noswitch: |
622 | .noswitch: |
623 | popad |
623 | popad |
624 | popfd |
624 | popfd |
625 | align 4 |
625 | align 4 |
Line 646... | Line 646... | ||
646 | mov [dma_process], eax |
646 | mov [dma_process], eax |
647 | mov eax, [TASK_BASE] |
647 | mov eax, [TASK_BASE] |
648 | mov [dma_slot_ptr], eax |
648 | mov [dma_slot_ptr], eax |
649 | mov [CURRENT_TASK], ebx |
649 | mov [CURRENT_TASK], ebx |
650 | mov [TASK_BASE], edi |
650 | mov [TASK_BASE], edi |
651 | mov byte [0xFFFF], 1 |
651 | mov byte [DONT_SWITCH], 1 |
652 | call do_change_task |
652 | call do_change_task |
653 | .noswitch: |
653 | .noswitch: |
654 | popad |
654 | popad |
655 | popfd |
655 | popfd |
656 | ret |
656 | ret |
Line 679... | Line 679... | ||
679 | pop edi esi ecx |
679 | pop edi esi ecx |
680 | pop edx |
680 | pop edx |
681 | pop eax |
681 | pop eax |
682 | ret |
682 | ret |
683 | .notread: |
683 | .notread: |
684 | mov eax, IDE_descriptor_table-OS_BASE |
684 | mov eax, IDE_descriptor_table |
685 | mov dword [eax+OS_BASE], 0x284000 |
685 | mov dword [eax], 0x284000 |
686 | mov word [eax+4+OS_BASE], 0x2000 |
686 | mov word [eax+4], 0x2000 |
- | 687 | sub eax, OS_BASE |
|
687 | mov dx, [IDEContrRegsBaseAddr] |
688 | mov dx, [IDEContrRegsBaseAddr] |
688 | cmp [hdbase], 0x1F0 |
689 | cmp [hdbase], 0x1F0 |
689 | jz @f |
690 | jz @f |
690 | add edx, 8 |
691 | add edx, 8 |
691 | @@: |
692 | @@: |
Line 764... | Line 765... | ||
764 | write_cache_chain: |
765 | write_cache_chain: |
765 | push esi |
766 | push esi |
766 | mov eax, IDE_descriptor_table |
767 | mov eax, IDE_descriptor_table |
767 | mov edx, [cache_chain_pos] |
768 | mov edx, [cache_chain_pos] |
768 | shl edx, 9 |
769 | shl edx, 9 |
769 | add edx, OS_BASE+0x610000 |
770 | add edx, 0x610000 |
770 | mov [eax], edx |
771 | mov [eax], edx |
771 | movzx edx, [cache_chain_size] |
772 | movzx edx, [cache_chain_size] |
772 | shl edx, 9 |
773 | shl edx, 9 |
773 | mov [eax+4], dx |
774 | mov [eax+4], dx |
774 | jmp do_write_dma |
775 | jmp do_write_dma |
775 | write_cache_sector: |
776 | write_cache_sector: |
776 | push esi |
777 | push esi |
777 | mov eax, IDE_descriptor_table |
778 | mov eax, IDE_descriptor_table |
778 | mov edx, edi |
779 | mov edx, edi |
779 | shl edx, 9 |
780 | shl edx, 9 |
780 | add edx, OS_BASE+0x610000 |
781 | add edx, 0x610000 |
781 | mov [eax], edx |
782 | mov [eax], edx |
782 | mov word [eax+4], 0x200 |
783 | mov word [eax+4], 0x200 |
783 | do_write_dma: |
784 | do_write_dma: |
- | 785 | sub eax, OS_BASE |
|
784 | mov dx, [IDEContrRegsBaseAddr] |
786 | mov dx, [IDEContrRegsBaseAddr] |
785 | cmp [hdbase], 0x1F0 |
787 | cmp [hdbase], 0x1F0 |
786 | jz @f |
788 | jz @f |
787 | add edx, 8 |
789 | add edx, 8 |
788 | @@: |
790 | @@: |