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 |