Subversion Repositories Kolibri OS

Rev

Rev 397 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 397 Rev 400
Line 1... Line 1...
1
MEM_WB     equ 6               ;write-back memory
1
MEM_WB     equ 6               ;write-back memory
2
MEM_WC     equ 1               ;write combined memory
2
MEM_WC     equ 1               ;write combined memory
3
MEM_UC     equ 0               ;uncached memory
3
MEM_UC     equ 0               ;uncached memory
Line 4... Line -...
4
 
-
 
5
tmp_page_tab equ 0x1000000        ; HEAP_BASE
-
 
6
 
4
 
7
align 4
5
align 4
Line 8... Line 6...
8
proc mem_test
6
proc mem_test
9
 
7
 
Line 51... Line 49...
51
           mov [pg_data.kernel_tables-OS_BASE], edx
49
           mov [pg_data.kernel_tables-OS_BASE], edx
52
 
50
 
Line 53... Line 51...
53
           xor eax, eax
51
           xor eax, eax
54
           mov edi, sys_pgdir-OS_BASE
52
           mov edi, sys_pgdir-OS_BASE
55
           mov ecx, 2048
53
           mov ecx, 4096/4
56
           cld
54
           cld
57
           rep stosd
55
           rep stosd
Line 58... Line 56...
58
 
56
 
59
           mov edx, sys_pgdir-OS_BASE
57
           mov edx, (sys_pgdir-OS_BASE)+ 0x800; (OS_BASE shr 20)
60
;           bt [cpu_caps], CAPS_PSE
58
           bt [cpu_caps-OS_BASE], CAPS_PSE
Line 61... Line 59...
61
;           jnc .no_PSE
59
           jnc .no_PSE
62
 
60
 
63
           mov ebx, cr4
61
           mov ebx, cr4
-
 
62
           or ebx, CR4_PSE
64
           or ebx, CR4_PSE
63
           mov eax, PG_LARGE+PG_SW
65
           mov eax, PG_LARGE+PG_SW
64
 
-
 
65
           bt [cpu_caps-OS_BASE], CAPS_PGE
66
           bt [cpu_caps-OS_BASE], CAPS_PGE
66
           jnc @F
67
           jnc @F
67
 
68
           or eax, PG_GLOBAL
68
           or eax, PG_GLOBAL
69
           or ebx, CR4_PGE
69
           or ebx, CR4_PGE
70
@@:
70
@@:
Line 71... Line 71...
71
           mov cr4, ebx
71
           mov cr4, ebx
72
           sub [pg_data.kernel_tables-OS_BASE], 2
-
 
73
 
72
           sub [pg_data.kernel_tables-OS_BASE], 2
74
           mov [edx], eax
-
 
75
           mov [edx+(OS_BASE shr 20)], eax
73
 
76
           add eax, 0x00400000
-
 
77
 
-
 
78
           mov [edx+4], eax
-
 
79
           mov [edx+(OS_BASE shr 20)+4], eax
74
           mov [edx], eax
80
           add eax, 0x00400000
-
 
81
 
-
 
Line 82... Line -...
82
           mov [edx+8], eax
-
 
83
           mov [edx+(OS_BASE shr 20)+8], eax
-
 
84
           add eax, 0x00400000
-
 
85
 
-
 
86
           mov [edx+12], eax
-
 
87
           mov [edx+(OS_BASE shr 20)+12], eax
75
           add eax, 0x00400000
88
           add edx, (OS_BASE shr 20)+16
76
           mov [edx+4], eax
89
           add eax, 0x00400000
77
           add edx, 8
90
 
78
 
91
;           mov eax, 0x800000+PG_SW
79
           mov eax, 0x800000+PG_SW
92
;           mov ecx, (HEAP_BASE-0x800000)/4096
80
           mov ecx, (tmp_page_tab-0x800000)/4096
93
;           jmp .map_low
81
           jmp .map_low
94
;.no_PSE:
82
.no_PSE:
95
;           mov eax, PG_SW
83
           mov eax, PG_SW
96
;           mov ecx, HEAP_BASE/4096
84
           mov ecx, tmp_page_tab/4096
97
;.map_low:
85
.map_low:
98
           mov edi, tmp_page_tab
86
           mov edi, tmp_page_tab
99
;@@:                                   ;
87
@@:                                   ;
Line 100... Line 88...
100
;           stosd
88
           stosd
101
;           add eax, 0x1000
89
           add eax, 0x1000
102
;           dec ecx
90
           dec ecx
103
;           jnz @B
91
           jnz @B
Line 118... Line 106...
118
           dec ecx
106
           dec ecx
119
           jnz .map_kernel_tabs
107
           jnz .map_kernel_tabs
120
 
108
 
Line 121... Line 109...
121
           mov dword [sys_pgdir-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE
109
           mov dword [sys_pgdir-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE
-
 
110
 
-
 
111
           mov edi, (sys_pgdir-OS_BASE)
-
 
112
           lea esi, [edi+(OS_BASE shr 20)]
-
 
113
           movsd
-
 
114
           movsd
-
 
115
           movsd
122
           ret
116
           ret
123
endp
117
endp
Line -... Line 118...
-
 
118
 
-
 
119
 
124
 
120
 
125
align 4
121
align 4
Line 126... Line 122...
126
proc init_page_map
122
proc init_page_map
127
 
123
 
Line 156... Line 152...
156
           and ecx, 31
152
           and ecx, 31
157
           shl eax, cl
153
           shl eax, cl
158
           mov [edi], eax
154
           mov [edi], eax
159
           add edi, OS_BASE
155
           add edi, OS_BASE
160
           mov [page_start-OS_BASE], edi;     sys_pgmap+384
156
           mov [page_start-OS_BASE], edi;
161
 
157
 
Line 162... Line 158...
162
           mov ebx, sys_pgmap
158
           mov ebx, sys_pgmap
163
           add ebx, [pg_data.pagemap_size-OS_BASE]
159
           add ebx, [pg_data.pagemap_size-OS_BASE]
164
           mov [page_end-OS_BASE], ebx
160
           mov [page_end-OS_BASE], ebx