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 |