Subversion Repositories Kolibri OS

Rev

Rev 4522 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4522 Rev 4532
Line 60... Line 60...
60
if used PCI_find_io
60
if used PCI_find_io
61
proc PCI_find_io stdcall bus, dev
61
proc PCI_find_io stdcall bus, dev
Line 62... Line 62...
62
 
62
 
63
        push    esi
63
        push    esi
64
        xor     eax, eax
64
        xor     eax, eax
65
        mov     esi, PCI_BASE_ADDRESS_0
65
        mov     esi, PCI_header00.base_addr_0
66
  .check:
66
  .check:
67
        invoke  PciRead32, [bus], [dev], esi
-
 
68
 
67
        invoke  PciRead32, [bus], [dev], esi
69
        test    eax, PCI_BASE_ADDRESS_IO_MASK
68
        test    eax, PCI_BASE_ADDRESS_IO_MASK
70
        jz      .inc
-
 
71
 
69
        jz      .inc
72
        test    eax, PCI_BASE_ADDRESS_SPACE_IO
70
        test    eax, PCI_BASE_ADDRESS_SPACE_IO
73
        jz      .inc
-
 
74
 
71
        jz      .inc
75
        and     eax, PCI_BASE_ADDRESS_IO_MASK
72
        and     eax, PCI_BASE_ADDRESS_IO_MASK
76
        pop     esi
73
        pop     esi
Line 77... Line 74...
77
        ret
74
        ret
78
 
75
 
79
  .inc:
76
  .inc:
80
        add     esi, 4
77
        add     esi, 4
81
        cmp     esi, PCI_BASE_ADDRESS_5
78
        cmp     esi, PCI_header00.base_addr_5
82
        jbe     .check
79
        jbe     .check
83
        pop     esi
80
        pop     esi
Line 93... Line 90...
93
 
90
 
94
        push    esi
91
        push    esi
95
        mov     esi, PCI_header00.base_addr_0
92
        mov     esi, PCI_header00.base_addr_0
96
  .check:
93
  .check:
97
        invoke  PciRead32, [bus], [dev], esi
-
 
98
 
94
        invoke  PciRead32, [bus], [dev], esi
99
        test    eax, PCI_BASE_ADDRESS_SPACE_IO  ; mmio address?
95
        test    eax, PCI_BASE_ADDRESS_SPACE_IO  ; mmio address?
100
        jnz     .inc
-
 
101
 
96
        jnz     .inc
102
        test    eax, 100b       ; 64 bit?
97
        test    eax, 100b       ; 64 bit?
103
        jnz     .inc
98
        jnz     .inc
104
        and     eax, not 1111b
99
        and     eax, not 1111b
105
        pop     esi
100
        pop     esi