Subversion Repositories Kolibri OS

Rev

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

Rev 3742 Rev 4700
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: 3742 $
24
$Revision: 4700 $
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
        ret
-
 
222
.ide3:
126
 
223
        cmp     [cd_appl_data], 0
127
        cmp     [cd_appl_data], 0
224
        jne     .ide3_appl_data
128
        jne     @f
-
 
129
 
225
        mov     eax, [cache_ide3_system_data]
130
        mov     eax, [eax+IDE_CACHE.system_data]
226
        ret
131
        ret
-
 
132
;--------------------------------------
227
.ide3_appl_data:
133
@@:
228
        mov     eax, [cache_ide3_appl_data]
134
        mov     eax, [eax+IDE_CACHE.appl_data]
229
        ret
135
        ret
230
;--------------------------------------------------------------------
136
;--------------------------------------------------------------------
231
align 4
137
align 4
232
cd_calculate_cache_3:
138
cd_calculate_cache_3:
-
 
139
; 1 - IDE0 ... 12 - IDE11
-
 
140
        push    eax
-
 
141
 
-
 
142
        mov     eax, [cdpos]
-
 
143
        dec     eax
233
;    mov   ecx,cache_max*10/100
144
        imul    eax, sizeof.IDE_CACHE
234
;    mov   edi,[cache_search_start]
145
        add     eax, cache_ide0
Line 235... Line -...
235
 
-
 
236
; 1 - IDE0 ... 4 - IDE3
-
 
237
.ide0:
-
 
238
        cmp     [cdpos], 1
-
 
239
        jne     .ide1
-
 
240
        cmp     [cd_appl_data], 0
-
 
241
        jne     .ide0_appl_data
-
 
242
        mov     edi, [cache_ide0_search_start]
-
 
243
        ret
-
 
244
.ide0_appl_data:
-
 
245
        mov     edi, [cache_ide0_appl_search_start]
-
 
246
        ret
-
 
247
.ide1:
-
 
248
        cmp     [cdpos], 2
-
 
249
        jne     .ide2
-
 
250
        cmp     [cd_appl_data], 0
-
 
251
        jne     .ide1_appl_data
-
 
252
        mov     edi, [cache_ide1_search_start]
-
 
253
        ret
-
 
254
.ide1_appl_data:
-
 
255
        mov     edi, [cache_ide1_appl_search_start]
-
 
256
        ret
-
 
257
.ide2:
-
 
258
        cmp     [cdpos], 3
-
 
259
        jne     .ide3
-
 
260
        cmp     [cd_appl_data], 0
-
 
261
        jne     .ide2_appl_data
-
 
262
        mov     edi, [cache_ide2_search_start]
-
 
263
        ret
-
 
264
.ide2_appl_data:
-
 
265
        mov     edi, [cache_ide2_appl_search_start]
-
 
266
        ret
-
 
267
.ide3:
146
 
268
        cmp     [cd_appl_data], 0
147
        cmp     [cd_appl_data], 0
-
 
148
        jne     @f
269
        jne     .ide3_appl_data
149
 
-
 
150
        mov     edi, [eax+IDE_CACHE.search_start]
270
        mov     edi, [cache_ide3_search_start]
151
        pop     eax
-
 
152
        ret
271
        ret
153
;--------------------------------------
272
.ide3_appl_data:
154
@@:
-
 
155
        mov     edi, [eax+IDE_CACHE.appl_search_start]
273
        mov     edi, [cache_ide3_appl_search_start]
156
        pop     eax
274
        ret
157
        ret
275
;--------------------------------------------------------------------
158
;--------------------------------------------------------------------
276
align 4
159
align 4
277
cd_calculate_cache_4:
-
 
278
;    cmp   edi,cache_max
160
cd_calculate_cache_4:
279
; 1 - IDE0 ... 4 - IDE3
-
 
280
.ide0:
-
 
281
        cmp     [cdpos], 1
161
; 1 - IDE0 ... 12 - IDE11
282
        jne     .ide1
-
 
283
        cmp     [cd_appl_data], 0
-
 
284
        jne     .ide0_appl_data
-
 
285
        cmp     edi, [cache_ide0_system_sad_size]
-
 
286
        ret
-
 
287
.ide0_appl_data:
-
 
288
        cmp     edi, [cache_ide0_appl_sad_size]
-
 
289
        ret
162
        push    eax
290
.ide1:
163
 
291
        cmp     [cdpos], 2
164
        mov     eax, [cdpos]
292
        jne     .ide2
-
 
293
        cmp     [cd_appl_data], 0
165
        dec     eax
294
        jne     .ide1_appl_data
-
 
295
        cmp     edi, [cache_ide1_system_sad_size]
-
 
296
        ret
-
 
297
.ide1_appl_data:
-
 
298
        cmp     edi, [cache_ide1_appl_sad_size]
-
 
299
        ret
-
 
300
.ide2:
-
 
301
        cmp     [cdpos], 3
-
 
302
        jne     .ide3
-
 
303
        cmp     [cd_appl_data], 0
166
        imul    eax, sizeof.IDE_CACHE
304
        jne     .ide2_appl_data
-
 
305
        cmp     edi, [cache_ide2_system_sad_size]
-
 
306
        ret
-
 
307
.ide2_appl_data:
-
 
308
        cmp     edi, [cache_ide2_appl_sad_size]
-
 
309
        ret
167
        add     eax, cache_ide0
310
.ide3:
168
 
311
        cmp     [cd_appl_data], 0
169
        cmp     [cd_appl_data], 0
-
 
170
        jne     @f
312
        jne     .ide3_appl_data
171
 
-
 
172
        cmp     edi, [eax+IDE_CACHE.system_sad_size]
313
        cmp     edi, [cache_ide3_system_sad_size]
173
        pop     eax
-
 
174
        ret
314
        ret
175
;--------------------------------------
315
.ide3_appl_data:
176
@@:
-
 
177
        cmp     edi, [eax+IDE_CACHE.appl_sad_size]
316
        cmp     edi, [cache_ide3_appl_sad_size]
178
        pop     eax
317
        ret
179
        ret
318
;--------------------------------------------------------------------
180
;--------------------------------------------------------------------
319
align 4
181
align 4
320
cd_calculate_cache_5:
-
 
321
;    mov   [cache_search_start],edi
182
cd_calculate_cache_5:
322
; 1 - IDE0 ... 4 - IDE3
-
 
323
.ide0:
-
 
324
        cmp     [cdpos], 1
183
; 1 - IDE0 ... 12 - IDE11
325
        jne     .ide1
-
 
326
        cmp     [cd_appl_data], 0
-
 
327
        jne     .ide0_appl_data
-
 
328
        mov     [cache_ide0_search_start], edi
-
 
329
        ret
-
 
330
.ide0_appl_data:
-
 
331
        mov     [cache_ide0_appl_search_start], edi
-
 
332
        ret
184
        push    eax
333
.ide1:
185
 
334
        cmp     [cdpos], 2
186
        mov     eax, [cdpos]
335
        jne     .ide2
-
 
336
        cmp     [cd_appl_data], 0
187
        dec     eax
337
        jne     .ide1_appl_data
-
 
338
        mov     [cache_ide1_search_start], edi
-
 
339
        ret
-
 
340
.ide1_appl_data:
-
 
341
        mov     [cache_ide1_appl_search_start], edi
-
 
342
        ret
-
 
343
.ide2:
-
 
344
        cmp     [cdpos], 3
-
 
345
        jne     .ide3
-
 
346
        cmp     [cd_appl_data], 0
188
        imul    eax, sizeof.IDE_CACHE
347
        jne     .ide2_appl_data
-
 
348
        mov     [cache_ide2_search_start], edi
-
 
349
        ret
-
 
350
.ide2_appl_data:
-
 
351
        mov     [cache_ide2_appl_search_start], edi
-
 
352
        ret
189
        add     eax, cache_ide0
353
.ide3:
190
 
354
        cmp     [cd_appl_data], 0
191
        cmp     [cd_appl_data], 0
-
 
192
        jne     @f
355
        jne     .ide3_appl_data
193
 
-
 
194
        mov     [eax+IDE_CACHE.search_start], edi
356
        mov     [cache_ide3_search_start], edi
195
        pop     eax
-
 
196
        ret
357
        ret
197
;--------------------------------------
358
.ide3_appl_data:
198
@@:
-
 
199
        mov     [eax+IDE_CACHE.appl_search_start], edi
359
        mov     [cache_ide3_appl_search_start], edi
200
        pop     eax
360
        ret
201
        ret
361
;--------------------------------------------------------------------
-
 
362
;align 4
-
 
363
;calculate_linear_to_real:
-
 
364
;    shr eax, 12
-
 
365
;    mov eax, [page_tabs+eax*4]
-
 
366
;    and eax, 0xFFFFF000
-