Rev 750 | Rev 821 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 750 | Rev 819 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 750 $ |
8 | $Revision: 819 $ |
9 | 9 | ||
Line 164... | Line 164... | ||
164 | shr ecx, 12 |
164 | shr ecx, 12 |
165 | and edx, -4096 |
165 | and edx, -4096 |
166 | or edx, [flags] |
166 | or edx, [flags] |
167 | @@: |
167 | @@: |
168 | mov [page_tabs+eax*4], edx |
168 | mov [page_tabs+eax*4], edx |
- | 169 | ; push eax |
|
169 | invlpg [ebx] |
170 | ; invlpg [ebx] |
- | 171 | ; pop eax |
|
170 | inc eax |
172 | inc eax |
171 | add ebx, edi |
173 | add ebx, edi |
172 | add edx, edi |
174 | add edx, edi |
173 | loop @B |
175 | loop @B |
Line 182... | Line 184... | ||
182 | ret |
184 | ret |
183 | endp |
185 | endp |
Line 184... | Line 186... | ||
184 | 186 | ||
185 | ; param |
187 | ; param |
186 | ; eax= page base + page flags |
188 | ; eax= page base + page flags |
187 | ; ebx= liear address |
189 | ; ebx= linear address |
Line 188... | Line 190... | ||
188 | ; ecx= count |
190 | ; ecx= count |
189 | 191 | ||
190 | align 4 |
192 | align 4 |
Line 200... | Line 202... | ||
200 | mov edx, 0x1000 |
202 | mov edx, 0x1000 |
201 | mov ebx, edi |
203 | mov ebx, edi |
202 | shr ebx, 12 |
204 | shr ebx, 12 |
203 | @@: |
205 | @@: |
204 | mov [page_tabs+ebx*4], eax |
206 | mov [page_tabs+ebx*4], eax |
- | 207 | ; push eax |
|
205 | invlpg [edi] |
208 | ; invlpg [edi] |
- | 209 | ; pop eax |
|
206 | add edi, edx |
210 | add edi, edx |
207 | add eax, edx |
211 | add eax, edx |
208 | inc ebx |
212 | inc ebx |
209 | dec ecx |
213 | dec ecx |
210 | jnz @B |
214 | jnz @B |
Line 261... | Line 265... | ||
261 | mov [pg_data.pages_free], ebp |
265 | mov [pg_data.pages_free], ebp |
262 | and [pg_data.pg_mutex],0 |
266 | and [pg_data.pg_mutex],0 |
263 | popad |
267 | popad |
264 | ret |
268 | ret |
Line -... | Line 269... | ||
- | 269 | ||
- | 270 | ; param |
|
- | 271 | ; eax= base |
|
- | 272 | ; ecx= count |
|
- | 273 | ||
- | 274 | align 4 |
|
- | 275 | unmap_pages: |
|
- | 276 | ||
- | 277 | push edi |
|
- | 278 | ||
- | 279 | mov edi, eax |
|
- | 280 | mov edx, eax |
|
- | 281 | ||
- | 282 | shr edi, 10 |
|
- | 283 | add edi, page_tabs |
|
- | 284 | ||
- | 285 | xor eax, eax |
|
- | 286 | @@: |
|
- | 287 | stosd |
|
- | 288 | invlpg [edx] |
|
- | 289 | add edx, 0x1000 |
|
- | 290 | loop @b |
|
- | 291 | ||
- | 292 | pop edi |
|
- | 293 | ret |
|
- | 294 | ||
265 | 295 | ||
266 | align 4 |
296 | align 4 |
267 | proc map_page_table stdcall, lin_addr:dword, phis_addr:dword |
297 | proc map_page_table stdcall, lin_addr:dword, phis_addr:dword |
268 | push ebx |
298 | push ebx |
269 | mov ebx, [lin_addr] |
299 | mov ebx, [lin_addr] |
Line 1084... | Line 1114... | ||
1084 | xor eax, eax |
1114 | xor eax, eax |
1085 | mov [esp+36], eax |
1115 | mov [esp+36], eax |
1086 | ret |
1116 | ret |
Line 1087... | Line 1117... | ||
1087 | 1117 | ||
- | 1118 | align 4 |
|
- | 1119 | proc load_pe_driver stdcall, file:dword |
|
- | 1120 | ||
- | 1121 | stdcall load_PE, [file] |
|
- | 1122 | test eax, eax |
|
- | 1123 | jz .fail |
|
- | 1124 | ||
- | 1125 | mov esi, eax |
|
- | 1126 | stdcall eax, DRV_ENTRY |
|
- | 1127 | test eax, eax |
|
- | 1128 | jz .fail |
|
- | 1129 | ||
- | 1130 | mov [eax+SRV.entry], esi |
|
- | 1131 | ret |
|
- | 1132 | ||
- | 1133 | .fail: |
|
- | 1134 | xor eax, eax |
|
- | 1135 | ret |
|
- | 1136 | endp |
|
- | 1137 | ||
- | 1138 | ||
1088 | align 4 |
1139 | align 4 |
Line 1089... | Line 1140... | ||
1089 | proc init_mtrr |
1140 | proc init_mtrr |
1090 | 1141 | ||
Line 1157... | Line 1208... | ||
1157 | inc ecx |
1208 | inc ecx |
1158 | wrmsr |
1209 | wrmsr |
1159 | ret |
1210 | ret |
1160 | endp |
1211 | endp |
Line 1161... | Line -... | ||
1161 | - | ||
1162 | - | ||
1163 | 1212 | ||
1164 | align 4 |
1213 | align 4 |
1165 | proc stall stdcall, delay:dword |
1214 | proc stall stdcall, delay:dword |
1166 | push ecx |
1215 | push ecx |
1167 | push edx |
1216 | push edx |
Line 1226... | Line 1275... | ||
1226 | shl edx, 2 |
1275 | shl edx, 2 |
1227 | shr edi, 10 |
1276 | shr edi, 10 |
1228 | @@: |
1277 | @@: |
1229 | mov [page_tabs+edi], eax |
1278 | mov [page_tabs+edi], eax |
1230 | mov [page_tabs+edi+edx], eax |
1279 | mov [page_tabs+edi+edx], eax |
1231 | invlpg [ebx] |
- | |
1232 | invlpg [ebx+esi] |
- | |
1233 | add eax, 0x1000 |
1280 | add eax, 0x1000 |
1234 | add ebx, 0x1000 |
1281 | add ebx, 0x1000 |
1235 | add edi, 4 |
1282 | add edi, 4 |
1236 | dec ecx |
1283 | dec ecx |
1237 | jnz @B |
1284 | jnz @B |
Line 1246... | Line 1293... | ||
1246 | pop ebx |
1293 | pop ebx |
1247 | .fail: |
1294 | .fail: |
1248 | ret |
1295 | ret |
1249 | endp |
1296 | endp0>> |
Line 1250... | Line -... | ||
1250 | - | ||
1251 | if 0 |
- | |
1252 | push eax |
- | |
1253 | push edx |
- | |
1254 | mov edx, 0x400 ;bochs |
- | |
1255 | mov al,0xff ;bochs |
- | |
1256 | out dx, al ;bochs |
- | |
1257 | pop edx |
- | |
1258 | pop eax |
- | |
1259 | end if0>> |
- |