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 |
- |