Subversion Repositories Kolibri OS

Rev

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