Rev 2934 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2934 | Rev 2935 | ||
---|---|---|---|
Line 680... | Line 680... | ||
680 | ;;;;;;;;;;;;;;;;;;;;;;; |
680 | ;;;;;;;;;;;;;;;;;;;;;;; |
681 | ;; ;; |
681 | ;; ;; |
682 | ;; Interrupt handler ;; |
682 | ;; Interrupt handler ;; |
683 | ;; ;; |
683 | ;; ;; |
684 | ;;;;;;;;;;;;;;;;;;;;;;; |
684 | ;;;;;;;;;;;;;;;;;;;;;;; |
- | 685 | ||
685 | align 4 |
686 | align 4 |
686 | int_handler: |
687 | int_handler: |
687 | DEBUGF 2,"\nIRQ %x\n", eax:2 ; no, you cant replace 'eax:2' with 'al', this must be a bug in FDO |
- | |
Line -... | Line 688... | ||
- | 688 | ||
688 | 689 | DEBUGF 1,"\n%s int\n", my_service |
|
689 | ;------------------------------------------- |
690 | ;------------------------------------------- |
Line 690... | Line -... | ||
690 | ; Find pointer of device wich made IRQ occur |
- | |
691 | 691 | ; Find pointer of device wich made IRQ occur |
|
692 | mov esi, device_list |
692 | |
693 | mov ecx, [devices] |
693 | mov ecx, [devices] |
- | 694 | test ecx, ecx |
|
694 | test ecx, ecx |
695 | jz .nothing |
695 | jz .fail |
696 | mov esi, device_list |
Line 696... | Line 697... | ||
696 | .nextdevice: |
697 | .nextdevice: |
- | 698 | mov ebx, [esi] |
|
697 | mov ebx, dword [esi] |
699 | |
- | 700 | mov edi, [device.mmio_addr] |
|
- | 701 | mov eax, [edi + REG_ICR] |
|
- | 702 | test eax, eax |
|
- | 703 | jnz .got_it |
|
698 | 704 | .continue: |
|
- | 705 | add esi, 4 |
|
- | 706 | dec ecx |
|
Line 699... | Line -... | ||
699 | mov edi, [device.mmio_addr] |
- | |
700 | test edi, edi |
707 | jnz .nextdevice |
Line 701... | Line -... | ||
701 | jz .nextdevice |
- | |
702 | 708 | .nothing: |
|
Line 703... | Line 709... | ||
703 | ;-------------------- |
709 | ret |
704 | ; Get interrupt cause |
710 | |
Line 705... | Line 711... | ||
705 | 711 | .got_it: |