Subversion Repositories Kolibri OS

Rev

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

Rev 168 Rev 170
Line 109... Line 109...
109
           mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
109
           mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
110
           ret
110
           ret
111
endp
111
endp
112
 
112
 
Line 113... Line -...
113
;align 4
-
 
114
;proc init_mem
-
 
115
;
-
 
116
;           xor eax, eax
-
 
117
;           mov edi, sys_pgdir
-
 
118
;           mov ecx, 2048
-
 
119
;           rep stosd
-
 
120
;
-
 
121
;           bt [cpu_caps], CAPS_PSE
-
 
122
;           jc .use_PSE
-
 
123
;
-
 
124
;           mov eax, PG_SW
-
 
125
;           mov esi, tmp_page_tab
-
 
126
;           mov ecx, 4096/4      ;0x0 - 0x00FFFFFF
-
 
127
;
-
 
128
;.map_low:
-
 
129
;           mov [esi], eax
-
 
130
;           add eax, 0x1000
-
 
131
;           mov [esi+4], eax
-
 
132
;           add eax, 0x1000
-
 
133
;           mov [esi+8], eax
-
 
134
;           add eax, 0x1000
-
 
135
;           mov [esi+12], eax
-
 
136
;           add eax, 0x1000
-
 
137
;           add esi, 16
-
 
138
;           dec ecx
-
 
139
;           jnz .map_low            ;ÿäðî
-
 
140
 
-
 
141
;           mov eax, tmp_page_tab+PG_SW
-
 
142
;           mov ecx, 4
-
 
143
;           xor ebx, ebx
-
 
144
 
-
 
145
;.map_page_tables:
-
 
146
;           mov [sys_pgdir+ebx], eax
-
 
147
;           mov [sys_master_tab+ebx], eax
-
 
148
;           add eax, 0x1000
-
 
149
;           add ebx, 4
-
 
150
;           dec ecx
-
 
151
;           jnz .map_page_tables
-
 
152
 
-
 
153
;           mov dword [sys_pgdir+0x600], sys_master_tab+PG_SW
-
 
154
;           mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
-
 
155
 
-
 
156
;           ret
-
 
157
 
-
 
158
;.use_PSE:
-
 
159
;           mov ebx, cr4
-
 
160
;           or ebx, CR4_PSE
-
 
161
;           mov eax, PG_LARGE+PG_SW
-
 
162
;           bt [cpu_caps], CAPS_PGE
-
 
163
;           jnc @F
-
 
164
;           or eax, PG_GLOBAL
-
 
165
;           or ebx, CR4_PGE
-
 
166
;@@:
-
 
167
;           mov dword [sys_pgdir], eax
-
 
168
;           add eax, 0x00400000
-
 
169
;           mov dword [sys_pgdir+4], eax
-
 
170
;           add eax, 0x00400000
-
 
171
;           mov dword [sys_pgdir+8], eax
-
 
172
;           add eax, 0x00400000
-
 
173
;           mov dword [sys_pgdir+12], eax
-
 
174
;
-
 
175
;           mov dword [sys_pgdir+0x600], sys_master_tab+PG_SW
-
 
176
;           mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
-
 
177
 
-
 
178
;           mov cr4, ebx
-
 
179
;           ret
-
 
180
;endp
-
 
181
 
-
 
182
align 4
113
align 4
183
proc init_page_map
114
proc init_page_map
184
           mov edi, sys_pgmap
115
           mov edi, sys_pgmap
185
           mov ecx, 512/4
116
           mov ecx, 512/4
186
           xor eax,eax
117
           xor eax,eax
Line 224... Line 155...
224
 
155
 
Line 225... Line 156...
225
           ret
156
           ret
226
endp
157
endp
Line 227... Line -...
227
 
-
 
228
;align 4
-
 
229
;proc init_pg_mem
-
 
230
;
-
 
231
;           mov edi, sys_pgmap
-
 
232
;           mov ecx, 512/4
-
 
233
;           xor eax,eax
-
 
234
;           cld
-
 
235
;           rep stosd
-
 
236
;
-
 
237
;           not eax
-
 
238
;           mov ecx, [pg_data.pagemap_size]
-
 
239
;           sub ecx, 512
-
 
240
;           shr ecx, 2
-
 
241
;           rep stosd
-
 
242
;
-
 
243
;           shl eax, PAGES_USED
-
 
244
;           mov [sys_pgmap+512], eax
-
 
245
;
-
 
246
;           mov [page_start], sys_pgmap+512
-
 
247
;           mov ebx, sys_pgmap
-
 
248
;           add ebx, [pg_data.pagemap_size]
-
 
249
;           mov [page_end], ebx
-
 
250
;           mov eax, [pg_data.pages_count]
-
 
251
;           sub eax, 4096+PAGES_USED
-
 
252
;           mov [pg_data.pages_free], eax
-
 
253
;
-
 
254
;           mov [pg_data.pages_faults], 0
-
 
255
;
-
 
256
;           mov edi, OS_BASE+0x01000000
-
 
257
;           mov esi, [pg_data.kernel_tables]
-
 
258
;           sub esi, 4
-
 
259
;           ja @f
-
 
260
;           mov esi, 1
-
 
261
;@@:
-
 
262
;           call alloc_page
-
 
263
;           stdcall map_page_table, sys_pgdir, edi, eax
-
 
264
;           add edi, 0x00400000
-
 
265
;           dec esi
-
 
266
;           jnz @B
-
 
267
;
-
 
268
;           mov ecx, [pg_data.kernel_tables]
-
 
269
;           sub ecx, 4
-
 
270
;           shl ecx, 10
-
 
271
;           mov edi, OS_BASE+0x01000000
-
 
272
;           shr edi, 10
-
 
273
;           add edi, pages_tab
-
 
274
;           xor eax, eax
-
 
275
;           cld
-
 
276
;           rep stosd
-
 
277
;
-
 
278
;           mov eax, cr3
-
 
279
;           mov cr3, eax
-
 
280
;
-
 
281
;           mov [pg_data.pg_mutex], 0
-
 
282
;           ret
-
 
283
;endp
-
 
284
 
158
 
285
align 4
159
align 4
Line 286... Line 160...
286
proc alloc_page
160
proc alloc_page
287
 
161
 
Line 1023... Line 897...
1023
           ret
897
           ret
1024
endp
898
endp
1025
 
899
 
Line 1026... Line 900...
1026
align 4
900
align 4
1027
proc get_mem_info stdcall, val:dword
901
sysfn_meminfo:
1028
 
-
 
1029
           mov esi, [val]
-
 
Line -... Line 902...
-
 
902
 
1030
 
903
           add ebx, new_app_base
1031
           mov eax, [pg_data.pages_count]
904
           mov eax, [pg_data.pages_count]
1032
           mov [esi], eax
905
           mov [ebx], eax
1033
           mov ebx, [pg_data.pages_free]
906
           mov ecx, [pg_data.pages_free]
1034
           mov [esi+4], ebx
907
           mov [ebx+4], ecx
1035
           mov ecx, [pg_data.pages_faults]
908
           mov edx, [pg_data.pages_faults]
-
 
909
           mov [ebx+8], edx
-
 
910
           mov esi, [heap_size]
-
 
911
           mov [ebx+12], esi
-
 
912
           mov edi, [heap_free]
-
 
913
           mov [ebx+16], edi
-
 
914
           mov eax, [heap_blocks]
-
 
915
           mov [ebx+20], eax
-
 
916
           mov ecx, [free_blocks]
Line 1036... Line 917...
1036
           mov [esi+8], ecx
917
           mov [ebx+24], ecx
1037
 
-
 
Line 1038... Line 918...
1038
           ret
918
 
1039
endp
919
           ret
Line 1040... Line 920...
1040
 
920
 
1041
align 4
921
align 4
Line 1042... Line 922...
1042
new_services:
922
new_services:
1043
 
923
 
1044
           cmp  eax,4
924
           cmp  eax,4
Line 1045... Line 925...
1045
           jle  sys_sheduler
925
           jle  sys_sheduler
1046
 
926
 
1047
           cmp eax, 10
927
           cmp eax, 11
1048
           jb .fail
928
           jb .fail
1049
           ja @f
929
           ja @f
1050
 
930
 
1051
           add ebx, new_app_base
931
;           add ebx, new_app_base
Line 1052... Line 932...
1052
           stdcall get_mem_info, ebx
932
;           stdcall get_mem_info, ebx
1053
           mov [esp+36], eax
933
;           mov [esp+36], eax
1054
           ret
934
;           ret
1055
@@:
935
;@@:
Line 1353... Line 1233...
1353
           wrmsr
1233
           wrmsr
1354
           ret
1234
           ret
1355
endp
1235
endp
1356
 
1236
 
Line 1357... Line -...
1357
 
-
 
1358
iglobal
1237
iglobal
1359
align 4
1238
align 4
1360
  intel_str    db "GenuineIntel",0
1239
  intel_str    db "GenuineIntel",0
1361
  AMD_str      db "AuthenticAMD",0
1240
  AMD_str      db "AuthenticAMD",0
1362
endg
1241
endg
Line 1406... Line 1285...
1406
   mem_block_arr   rd 1
1285
   mem_block_arr   rd 1
1407
   mem_block_start rd 1
1286
   mem_block_start rd 1
1408
   mem_block_end   rd 1
1287
   mem_block_end   rd 1
1409
   mem_block_mask  rd 2
1288
   mem_block_mask  rd 2
1410
 
1289
   heap_size       rd 1
-
 
1290
   heap_free       rd 1
-
 
1291
   heap_blocks     rd 1
-
 
1292
   free_blocks     rd 1
-
 
1293
 
Line 1411... Line 1294...
1411
   page_start      rd 1
1294
   page_start      rd 1
1412
   page_end        rd 1
1295
   page_end        rd 1
1413
   sys_page_map    rd 1
1296
   sys_page_map    rd 1
1414
   app_load        rd 1
1297
;   app_load        rd 1
1415
endg
1298
endg
Line 1416... Line 1299...
1416
 
1299
 
1417
 
1300
 
1418
;     push eax
1301
;     push eax
1419
;     push edx
1302
;     push edx
1420
;     mov edx, 0x400   ;bocsh
1303
;     mov edx, 0x400   ;bocsh
1421
;     mov al,0xff      ;bocsh
-
 
1422
;     out dx, al       ;bocsh
1304
;     mov al,0xff      ;bocsh
1423
;     nop              ;bocsh fix
1305
;     out dx, al       ;bocsh