Subversion Repositories Kolibri OS

Rev

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

Rev 3908 Rev 5201
Line 19... Line 19...
19
;  [cache_ide[X]_system_data]
19
;  [cache_ide[X]_system_data]
20
;  or [cache_ide[x]_appl_data] - cache entries
20
;  or [cache_ide[x]_appl_data] - cache entries
21
;
21
;
22
;**************************************************************************
22
;**************************************************************************
Line 23... Line 23...
23
 
23
 
Line 24... Line 24...
24
$Revision: 3908 $
24
$Revision: 5201 $
25
 
25
 
26
align 4
26
align 4
27
find_empty_slot_CD_cache:
27
find_empty_slot_CD_cache:
Line 39... Line 39...
39
.inside_cache:
39
.inside_cache:
40
        call    cd_calculate_cache_5
40
        call    cd_calculate_cache_5
41
        ret
41
        ret
42
;--------------------------------------------------------------------
42
;--------------------------------------------------------------------
43
clear_CD_cache:
43
clear_CD_cache:
-
 
44
        DEBUGF  1, 'K : clear_CD_cache\n'
44
        pusha
45
        pusha
-
 
46
 
-
 
47
        mov     esi, [cdpos]
45
.ide0:
48
        dec     esi
-
 
49
        imul    esi, sizeof.IDE_CACHE
-
 
50
        add     esi, cache_ide0
-
 
51
 
46
        xor     eax, eax
52
        xor     eax, eax
47
        cmp     [cdpos], 1
-
 
48
        jne     .ide1
-
 
49
        mov     [cache_ide0_search_start], eax
-
 
50
        mov     ecx, [cache_ide0_system_sad_size]
-
 
51
        mov     edi, [cache_ide0_pointer]
-
 
52
        call    .clear
-
 
53
        mov     [cache_ide0_appl_search_start], eax
-
 
54
        mov     ecx, [cache_ide0_appl_sad_size]
-
 
55
        mov     edi, [cache_ide0_data_pointer]
-
 
56
        jmp     .continue
-
 
57
.ide1:
53
 
58
        cmp     [cdpos], 2
-
 
59
        jne     .ide2
-
 
60
        mov     [cache_ide1_search_start], eax
-
 
61
        mov     ecx, [cache_ide1_system_sad_size]
-
 
62
        mov     edi, [cache_ide1_pointer]
-
 
63
        call    .clear
-
 
64
        mov     [cache_ide1_appl_search_start], eax
-
 
65
        mov     ecx, [cache_ide1_appl_sad_size]
-
 
66
        mov     edi, [cache_ide1_data_pointer]
-
 
67
        jmp     .continue
-
 
68
.ide2:
-
 
69
        cmp     [cdpos], 3
-
 
70
        jne     .ide3
-
 
71
        mov     [cache_ide2_search_start], eax
-
 
72
        mov     ecx, [cache_ide2_system_sad_size]
-
 
73
        mov     edi, [cache_ide2_pointer]
-
 
74
        call    .clear
-
 
75
        mov     [cache_ide2_appl_search_start], eax
-
 
76
        mov     ecx, [cache_ide2_appl_sad_size]
-
 
77
        mov     edi, [cache_ide2_data_pointer]
-
 
78
        jmp     .continue
-
 
79
.ide3:
-
 
80
        mov     [cache_ide3_search_start], eax
54
        mov     [esi+IDE_CACHE.search_start], eax
81
        mov     ecx, [cache_ide3_system_sad_size]
55
        mov     ecx, [esi+IDE_CACHE.system_sad_size]
82
        mov     edi, [cache_ide3_pointer]
56
        mov     edi, [esi+IDE_CACHE.pointer]
83
        call    .clear
57
        call    .clear
-
 
58
 
84
        mov     [cache_ide3_appl_search_start], eax
59
        mov     [esi+IDE_CACHE.appl_search_start], eax
85
        mov     ecx, [cache_ide3_appl_sad_size]
60
        mov     ecx, [esi+IDE_CACHE.appl_sad_size]
86
        mov     edi, [cache_ide3_data_pointer]
61
        mov     edi, [esi+IDE_CACHE.data_pointer]
87
.continue:
-
 
88
        call    .clear
62
        call    .clear
-
 
63
 
89
        popa
64
        popa
90
        ret
65
        ret
-
 
66
;--------------------------------------
91
.clear:
67
.clear:
92
        shl     ecx, 1
68
        shl     ecx, 1
93
        cld
69
        cld
94
        rep stosd
70
        rep stosd
95
        ret
71
        ret
96
;--------------------------------------------------------------------
72
;--------------------------------------------------------------------
97
align 4
73
align 4
98
cd_calculate_cache:
74
cd_calculate_cache:
99
; 1 - IDE0 ... 4 - IDE3
75
; 1 - IDE0 ... 12 - IDE11
100
.ide0:
-
 
101
        cmp     [cdpos], 1
-
 
102
        jne     .ide1
-
 
103
        cmp     [cd_appl_data], 0
-
 
104
        jne     .ide0_appl_data
-
 
105
        mov     ecx, [cache_ide0_system_sad_size]
-
 
106
        mov     esi, [cache_ide0_pointer]
-
 
107
        ret
-
 
108
.ide0_appl_data:
-
 
109
        mov     ecx, [cache_ide0_appl_sad_size]
-
 
110
        mov     esi, [cache_ide0_data_pointer]
-
 
111
        ret
-
 
112
.ide1:
-
 
113
        cmp     [cdpos], 2
-
 
114
        jne     .ide2
76
        push    eax
115
        cmp     [cd_appl_data], 0
-
 
116
        jne     .ide1_appl_data
-
 
117
        mov     ecx, [cache_ide1_system_sad_size]
-
 
118
        mov     esi, [cache_ide1_pointer]
-
 
119
        ret
-
 
120
.ide1_appl_data:
-
 
121
        mov     ecx, [cache_ide1_appl_sad_size]
-
 
122
        mov     esi, [cache_ide1_data_pointer]
-
 
123
        ret
-
 
124
.ide2:
77
 
125
        cmp     [cdpos], 3
78
        mov     eax, [cdpos]
126
        jne     .ide3
79
        dec     eax
127
        cmp     [cd_appl_data], 0
-
 
128
        jne     .ide2_appl_data
80
        imul    eax, sizeof.IDE_CACHE
129
        mov     ecx, [cache_ide2_system_sad_size]
-
 
130
        mov     esi, [cache_ide2_pointer]
81
        add     eax, cache_ide0
131
        ret
-
 
132
.ide2_appl_data:
-
 
133
        mov     ecx, [cache_ide2_appl_sad_size]
-
 
134
        mov     esi, [cache_ide2_data_pointer]
-
 
135
        ret
-
 
136
.ide3:
82
 
137
        cmp     [cd_appl_data], 0
83
        cmp     [cd_appl_data], 0
138
        jne     .ide3_appl_data
84
        jne     @f
-
 
85
 
139
        mov     ecx, [cache_ide3_system_sad_size]
86
        mov     ecx, [eax+IDE_CACHE.system_sad_size]
140
        mov     esi, [cache_ide3_pointer]
87
        mov     esi, [eax+IDE_CACHE.pointer]
-
 
88
        pop     eax
141
        ret
89
        ret
-
 
90
;--------------------------------------
142
.ide3_appl_data:
91
@@:
143
        mov     ecx, [cache_ide3_appl_sad_size]
92
        mov     ecx, [eax+IDE_CACHE.appl_sad_size]
144
        mov     esi, [cache_ide3_data_pointer]
93
        mov     esi, [eax+IDE_CACHE.data_pointer]
-
 
94
        pop     eax
145
        ret
95
        ret
146
;--------------------------------------------------------------------
96
;--------------------------------------------------------------------
147
align 4
97
align 4
148
cd_calculate_cache_1:
98
cd_calculate_cache_1:
149
; 1 - IDE0 ... 4 - IDE3
99
; 1 - IDE0 ... 12 - IDE11
150
.ide0:
-
 
151
        cmp     [cdpos], 1
-
 
152
        jne     .ide1
-
 
153
        cmp     [cd_appl_data], 0
-
 
154
        jne     .ide0_appl_data
-
 
155
        mov     esi, [cache_ide0_pointer]
-
 
156
        ret
-
 
157
.ide0_appl_data:
-
 
158
        mov     esi, [cache_ide0_data_pointer]
-
 
159
        ret
-
 
160
.ide1:
-
 
161
        cmp     [cdpos], 2
-
 
162
        jne     .ide2
100
        push    eax
163
        cmp     [cd_appl_data], 0
-
 
164
        jne     .ide1_appl_data
-
 
165
        mov     esi, [cache_ide1_pointer]
-
 
166
        ret
-
 
167
.ide1_appl_data:
-
 
168
        mov     esi, [cache_ide1_data_pointer]
-
 
169
        ret
-
 
170
.ide2:
101
 
171
        cmp     [cdpos], 3
102
        mov     eax, [cdpos]
172
        jne     .ide3
103
        dec     eax
173
        cmp     [cd_appl_data], 0
-
 
174
        jne     .ide2_appl_data
104
        imul    eax, sizeof.IDE_CACHE
175
        mov     esi, [cache_ide2_pointer]
105
        add     eax, cache_ide0
176
        ret
-
 
177
.ide2_appl_data:
-
 
178
        mov     esi, [cache_ide2_data_pointer]
-
 
179
        ret
-
 
180
.ide3:
106
 
181
        cmp     [cd_appl_data], 0
107
        cmp     [cd_appl_data], 0
182
        jne     .ide3_appl_data
108
        jne     @f
-
 
109
 
183
        mov     esi, [cache_ide3_pointer]
110
        mov     esi, [eax+IDE_CACHE.pointer]
-
 
111
        pop     eax
184
        ret
112
        ret
-
 
113
;--------------------------------------
185
.ide3_appl_data:
114
@@:
186
        mov     esi, [cache_ide3_data_pointer]
115
        mov     esi, [eax+IDE_CACHE.data_pointer]
-
 
116
        pop     eax
187
        ret
117
        ret
188
;--------------------------------------------------------------------
118
;--------------------------------------------------------------------
189
align 4
119
align 4
190
cd_calculate_cache_2:
120
cd_calculate_cache_2:
191
; 1 - IDE0 ... 4 - IDE3
121
; 1 - IDE0 ... 12 - IDE11
192
.ide0:
-
 
193
        cmp     [cdpos], 1
122
        mov     eax, [cdpos]
194
        jne     .ide1
123
        dec     eax
195
        cmp     [cd_appl_data], 0
-
 
196
        jne     .ide0_appl_data
-
 
197
        mov     eax, [cache_ide0_system_data]
-
 
198
        ret
-
 
199
.ide0_appl_data:
-
 
200
        mov     eax, [cache_ide0_appl_data]
-
 
201
        ret
-
 
202
.ide1:
-
 
203
        cmp     [cdpos], 2
-
 
204
        jne     .ide2
-
 
205
        cmp     [cd_appl_data], 0
-
 
206
        jne     .ide1_appl_data
-
 
207
        mov     eax, [cache_ide1_system_data]
-
 
208
        ret
-
 
209
.ide1_appl_data:
-
 
210
        mov     eax, [cache_ide1_appl_data]
124
        imul    eax, sizeof.IDE_CACHE
211
        ret
-
 
212
.ide2:
-
 
213
        cmp     [cdpos], 3
-
 
214
        jne     .ide3
-
 
215
        cmp     [cd_appl_data], 0
-
 
216
        jne     .ide2_appl_data
-
 
217
        mov     eax, [cache_ide2_system_data]
-
 
218
        ret
-
 
219
.ide2_appl_data:
-
 
220
        mov     eax, [cache_ide2_appl_data]
125
        add     eax, cache_ide0
221