Subversion Repositories Kolibri OS

Rev

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