Rev 354 | Rev 363 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 354 | Rev 357 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | tmp_page_tab equ 0x00C00000 |
1 | tmp_page_tab equ HEAP_BASE |
Line 2... | Line 2... | ||
2 | 2 | ||
3 | align 4 |
3 | align 4 |
Line 4... | Line 4... | ||
4 | proc mem_test |
4 | proc mem_test |
Line 16... | Line 16... | ||
16 | xchg ebx, dword [edi] |
16 | xchg ebx, dword [edi] |
17 | cmp dword [edi], 'TEST' |
17 | cmp dword [edi], 'TEST' |
18 | xchg ebx, dword [edi] |
18 | xchg ebx, dword [edi] |
19 | je @b |
19 | je @b |
20 | 20 | mov [MEM_AMOUNT], edi |
|
- | 21 | ||
Line 21... | Line 22... | ||
21 | and eax, not (CR0_CD+CR0_NW) ;enable caching |
22 | and eax, not (CR0_CD+CR0_NW) ;enable caching |
22 | mov cr0, eax |
23 | mov cr0, eax |
23 | mov eax, edi |
24 | mov eax, edi |
24 | mov [LFBSize], 0x00800000 |
25 | mov [LFBSize], 0x00800000 |
25 | ret |
26 | ret |
26 | endp |
27 | endp |
Line 27... | Line 28... | ||
27 | 28 | ||
28 | align 4 |
29 | align 4 |
- | 30 | proc init_mem |
|
- | 31 | ||
- | 32 | mov eax, [MEM_AMOUNT] |
|
- | 33 | ||
- | 34 | mov [pg_data.mem_amount], eax |
|
- | 35 | mov [pg_data.kernel_max], eax |
|
- | 36 | ||
- | 37 | shr eax, 12 |
|
- | 38 | mov edx, eax |
|
- | 39 | mov [pg_data.pages_count], eax |
|
- | 40 | mov [pg_data.kernel_pages], eax |
|
- | 41 | ||
- | 42 | shr eax, 3 |
|
- | 43 | mov [pg_data.pagemap_size], eax |
|
- | 44 | ||
- | 45 | shr edx, 10 |
|
- | 46 | cmp edx, 3 |
|
- | 47 | ja @f |
|
- | 48 | inc edx ;at least 4Mb for kernel heap |
|
- | 49 | @@: |
|
- | 50 | mov [pg_data.kernel_tables], edx |
|
29 | proc init_memEx |
51 | |
30 | xor eax, eax |
52 | xor eax, eax |
31 | mov edi, sys_pgdir |
53 | mov edi, sys_pgdir |
- | 54 | mov ecx, 2048 |
|
32 | mov ecx, 2048 |
55 | cld |
Line -... | Line 56... | ||
- | 56 | rep stosd |
|
33 | rep stosd |
57 | |
34 | 58 | mov edx, sys_pgdir |
|
Line 35... | Line 59... | ||
35 | bt [cpu_caps], CAPS_PSE |
59 | bt [cpu_caps], CAPS_PSE |
36 | jnc .no_PSE |
60 | jnc .no_PSE |
Line 43... | Line 67... | ||
43 | or eax, PG_GLOBAL |
67 | or eax, PG_GLOBAL |
44 | or ebx, CR4_PGE |
68 | or ebx, CR4_PGE |
45 | @@: |
69 | @@: |
46 | mov cr4, ebx |
70 | mov cr4, ebx |
47 | 71 | sub [pg_data.kernel_tables], 2 |
|
- | 72 | ||
Line 48... | Line 73... | ||
48 | mov dword [sys_pgdir], eax |
73 | mov [edx], eax |
49 | add eax, 0x00400000 |
- | |
50 | mov dword [sys_pgdir+4], eax |
- | |
51 | add eax, 0x00400000 |
74 | add eax, 0x00400000 |
52 | mov dword [sys_pgdir+8], eax |
75 | mov [edx+4], eax |
- | 76 | add edx, 8 |
|
Line 53... | Line -... | ||
53 | - | ||
54 | mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW |
- | |
55 | - | ||
56 | mov ecx, [pg_data.kernel_tables] |
- | |
57 | sub ecx, 3 ;4 |
77 | |
58 | mov eax, tmp_page_tab+PG_SW |
78 | mov eax, 0x800000+PG_SW |
59 | mov edi, sys_pgdir+12 ;16 |
- | |
60 | 79 | mov ecx, (HEAP_BASE-0x800000)/4096 |
|
61 | jmp .map_kernel_tabs |
80 | jmp .map_low |
62 | .no_PSE: |
81 | .no_PSE: |
63 | mov eax, PG_SW |
82 | mov eax, PG_SW |
64 | mov esi, tmp_page_tab |
- | |
65 | mov ecx, 3072/4; 4096/4 ;0x0 - 0x00FFFFFF |
83 | mov ecx, HEAP_BASE/4096 |
66 | .map_low: |
84 | .map_low: |
67 | mov [esi], eax |
- | |
68 | add eax, 0x1000 |
85 | mov edi, tmp_page_tab |
69 | mov [esi+4], eax |
- | |
70 | add eax, 0x1000 |
86 | @@: ; |
71 | mov [esi+8], eax |
- | |
72 | add eax, 0x1000 |
- | |
73 | mov [esi+12], eax |
87 | stosd |
74 | add eax, 0x1000 |
- | |
75 | add esi, 16 |
88 | add eax, 0x1000 |
- | 89 | dec ecx |
|
- | 90 | jnz @B |
|
76 | dec ecx |
91 | |
- | 92 | mov ecx, [pg_data.kernel_tables] |
|
- | 93 | shl ecx, 10 |
|
- | 94 | xor eax, eax |
|
Line 77... | Line 95... | ||
77 | jnz .map_low ;ÿäðî |
95 | rep stosd |
78 | 96 | ||
79 | mov ecx, [pg_data.kernel_tables] |
97 | mov ecx, [pg_data.kernel_tables] |
Line 80... | Line 98... | ||
80 | mov eax, tmp_page_tab+PG_SW |
98 | mov eax, tmp_page_tab+PG_SW |
Line 81... | Line 99... | ||
81 | mov edi, sys_pgdir |
99 | mov edi, edx |
82 | 100 | ||
83 | .map_kernel_tabs: |
- | |
84 | 101 | .map_kernel_tabs: |
|
85 | mov [edi], eax |
102 | |
Line 86... | Line -... | ||
86 | add eax, 0x1000 |
- | |
87 | add edi, 4 |
- | |
88 | dec ecx |
- | |
89 | jnz .map_kernel_tabs |
- | |
90 | - | ||
91 | mov edi, tmp_page_tab |
- | |
92 | bt [cpu_caps], CAPS_PSE |
- | |
93 | jc @F |
- | |
94 | add edi, 3072*4 ;4096*4 ;skip low kernel memory |
- | |
95 | @@: |
- | |
96 | mov ecx, [pg_data.kernel_tables] |
- | |
97 | sub ecx, 3 |
- | |
98 | shl ecx, 10 |
103 | stosd |
99 | xor eax, eax |
- | |
100 | cld |
104 | add eax, 0x1000 |
101 | rep stosd |
105 | dec ecx |
Line 102... | Line 106... | ||
102 | 106 | jnz .map_kernel_tabs |
|
103 | mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW |
107 | |
- | 108 | mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW |
|
104 | 109 | ret |
|
- | 110 | endp |
|
105 | ret |
111 | |
106 | endp |
112 | align 4 |
107 | 113 | proc init_page_map |
|
108 | align 4 |
114 | |
Line 109... | Line 115... | ||
109 | proc init_page_map |
115 | mov edi, sys_pgmap |
110 | mov edi, sys_pgmap |
116 | mov ecx, (HEAP_BASE/4096)/32 ;384/4 |
111 | mov ecx, 384/4 |
117 | mov ebx, ecx |
112 | xor eax,eax |
118 | xor eax,eax |
113 | cld |
119 | cld |
Line 114... | Line 120... | ||
114 | rep stosd |
120 | rep stosd |
115 | 121 | ||
116 | not eax |
122 | not eax |
117 | mov ecx, [pg_data.pagemap_size] |
123 | mov ecx, [pg_data.pagemap_size] |
118 | sub ecx, 384 |
- | |
119 | shr ecx, 2 |
- | |
120 | rep stosd |
- | |
121 | 124 | sub ecx, ebx |
|
122 | mov edi, sys_pgmap+384 |
125 | shr ecx, 2 |
123 | mov edx, [pg_data.pages_count] |
126 | rep stosd |
Line 124... | Line 127... | ||
124 | mov ecx, [pg_data.kernel_tables] |
127 | |
125 | bt [cpu_caps], CAPS_PSE |
128 | lea edi, [sys_pgmap+ebx*4] ;+384 |
Line 138... | Line 141... | ||
138 | not eax |
141 | not eax |
139 | mov ecx, ebx |
142 | mov ecx, ebx |
140 | and ecx, 31 |
143 | and ecx, 31 |
141 | shl eax, cl |
144 | shl eax, cl |
- | 145 | mov [page_start], edi; sys_pgmap+384 |
|
142 | stosd |
146 | stosd |
Line 143... | Line -... | ||
143 | - | ||
144 | mov [page_start], sys_pgmap+384 |
147 | |
145 | mov ebx, sys_pgmap |
148 | mov ebx, sys_pgmap |
146 | add ebx, [pg_data.pagemap_size] |
149 | add ebx, [pg_data.pagemap_size] |
Line 147... | Line 150... | ||
147 | mov [page_end], ebx |
150 | mov [page_end], ebx |
Line 1346... | Line 1349... | ||
1346 | uglobal |
1349 | uglobal |
1347 | align 16 |
1350 | align 16 |
1348 | irq_tab rd 16 |
1351 | irq_tab rd 16 |
Line 1349... | Line -... | ||
1349 | - | ||
1350 | 1352 | ||
Line 1351... | Line 1353... | ||
1351 | MEM_FreeSpace rd 1 |
1353 | MEM_FreeSpace rd 1 |
1352 | 1354 | ||
1353 | ipc_tmp rd 1 |
1355 | ipc_tmp rd 1 |
Line 1361... | Line 1363... | ||
1361 | tmp_task_pdir rd 1 |
1363 | tmp_task_pdir rd 1 |
1362 | tmp_task_ptab rd 1 |
1364 | tmp_task_ptab rd 1 |
1363 | tmp_task_data rd 1 |
1365 | tmp_task_data rd 1 |
Line 1364... | Line -... | ||
1364 | - | ||
1365 | fpu_data rd 1 |
1366 | |
1366 | fdd_buff rd 1 |
1367 | fdd_buff rd 1 |
Line 1367... | Line 1368... | ||
1367 | LFBSize rd 1 |
1368 | LFBSize rd 1 |
1368 | 1369 | ||
Line 1393... | Line 1394... | ||
1393 | endg |
1394 | endg |
Line 1394... | Line 1395... | ||
1394 | 1395 | ||
1395 | uglobal |
1396 | uglobal |
- | 1397 | align 16 |
|
- | 1398 | fpu_data: |
|
Line 1396... | Line 1399... | ||
1396 | align 16 |
1399 | rb 512 |
Line 1397... | Line 1400... | ||
1397 | 1400 | ||
1398 | mst MEM_STATE |
1401 | mst MEM_STATE |
Line 1404... | Line 1407... | ||
1404 | 1407 | ||
Line 1405... | Line 1408... | ||
1405 | srv.fd rd 1 |
1408 | srv.fd rd 1 |
1406 | srv.bk rd 1 |
1409 | srv.bk rd 1 |
Line -... | Line 1410... | ||
- | 1410 | ||
1407 | 1411 | mem_used.fd rd 1 |
|
- | 1412 | mem_used.bk rd 1 |
|
1408 | mem_used_list rd 1 |
1413 | |
1409 | mem_block_arr rd 1 |
1414 | mem_block_arr rd 1 |
1410 | mem_block_start rd 1 |
1415 | mem_block_start rd 1 |
Line 1411... | Line 1416... | ||
1411 | mem_block_end rd 1 |
1416 | mem_block_end rd 1 |
Line 1422... | Line 1427... | ||
1422 | event_start rd 1 |
1427 | event_start rd 1 |
1423 | event_end rd 1 |
1428 | event_end rd 1 |
1424 | event_uid rd 1 |
1429 | event_uid rd 1 |
1425 | sys_page_map rd 1 |
1430 | sys_page_map rd 1 |
1426 | endg |
1431 | os_stack rd 1 |
- | 1432 | endg |
|
1427 | 1433 | ||
Line 1428... | Line 1434... | ||
1428 | if 0 |
1434 | if 0 |
1429 | push eax |
1435 | push eax |
1430 | push edx |
1436 | push edx |