Rev 6242 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6242 | Rev 6339 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 6242 $ |
8 | $Revision: 6339 $ |
9 | 9 | ||
10 | 10 | ||
Line 122... | Line 122... | ||
122 | cmp edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096 |
122 | cmp edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096 |
123 | jae .set |
123 | jae .set |
124 | mov edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096 |
124 | mov edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096 |
125 | .set: |
125 | .set: |
126 | mov [pg_data.kernel_pages-OS_BASE], edx |
126 | mov [pg_data.kernel_pages-OS_BASE], edx |
127 | shr edx, 10 |
127 | shr edx, 9 |
128 | mov [pg_data.kernel_tables-OS_BASE], edx |
128 | mov [pg_data.kernel_tables-OS_BASE], edx |
Line 129... | Line 129... | ||
129 | 129 | ||
130 | xor eax, eax |
130 | mov edx, sys_pml2 |
131 | mov edi, sys_proc-OS_BASE |
- | |
132 | mov ecx, 8192/4 |
- | |
133 | cld |
- | |
134 | rep stosd |
- | |
135 | - | ||
136 | mov edx, (sys_proc-OS_BASE+PROC.pdt_0)+ 0x800; (OS_BASE shr 20) |
131 | mov edi, 0x0070000 ;sys_proc+PROC.pdt_0-OS_BASE |
137 | bt [cpu_caps-OS_BASE], CAPS_PSE |
132 | bt [cpu_caps-OS_BASE], CAPS_PSE |
Line 138... | Line 133... | ||
138 | jnc .no_PSE |
133 | jnc .no_PSE |
139 | 134 | ||
140 | mov ebx, cr4 |
135 | mov ebx, cr4 |
141 | or ebx, CR4_PSE |
136 | or ebx, CR4_PSE+CR4_PAE |
142 | mov eax, PDE_LARGE+PG_SWR |
137 | mov eax, PDE_LARGE+PG_SWR |
Line 143... | Line 138... | ||
143 | mov cr4, ebx |
138 | mov cr4, ebx |
- | 139 | dec [pg_data.kernel_tables-OS_BASE] |
|
144 | dec [pg_data.kernel_tables-OS_BASE] |
140 | |
- | 141 | mov [edx], eax |
|
- | 142 | mov [edi], eax |
|
- | 143 | add edx, 8 |
|
- | 144 | add edi, 8 |
|
- | 145 | add eax, 0x200000 |
|
Line 145... | Line -... | ||
145 | - | ||
146 | mov [edx], eax |
146 | mov [edx], eax |
147 | add edx, 4 |
147 | mov [edi], eax |
148 | 148 | add edx, 8 |
|
149 | mov edi, [tmp_page_tabs] |
149 | |
150 | jmp .map_kernel_heap ; new kernel fits to the first 4Mb - nothing to do with ".map_low" |
150 | jmp .map_kernel_heap ; new kernel fits to the first 4Mb - nothing to do with ".map_low" |
Line 159... | Line 159... | ||
159 | add eax, 0x1000 |
159 | add eax, 0x1000 |
160 | dec ecx |
160 | dec ecx |
161 | jnz @B |
161 | jnz @B |
Line 162... | Line 162... | ||
162 | 162 | ||
163 | .map_kernel_heap: |
- | |
164 | mov ecx, [pg_data.kernel_tables-OS_BASE] |
- | |
165 | shl ecx, 10 |
- | |
166 | xor eax, eax |
- | |
Line 167... | Line 163... | ||
167 | rep stosd |
163 | .map_kernel_heap: |
168 | 164 | ||
169 | mov ecx, [pg_data.kernel_tables-OS_BASE] |
165 | mov ecx, [pg_data.kernel_tables-OS_BASE] |
170 | mov eax, [tmp_page_tabs] |
- | |
Line 171... | Line 166... | ||
171 | or eax, PG_SWR |
166 | mov eax, [tmp_page_tabs] |
172 | mov edi, edx |
167 | or eax, PG_SWR |
173 | 168 | ||
- | 169 | .map_kernel_tabs: |
|
174 | .map_kernel_tabs: |
170 | mov [edx], eax |
175 | stosd |
171 | add eax, 0x1000 |
Line -... | Line 172... | ||
- | 172 | add edx, 8 |
|
- | 173 | dec ecx |
|
- | 174 | jnz .map_kernel_tabs |
|
- | 175 | ||
- | 176 | mov dword [sys_pml2+8192-20*8], sys_proc+PROC.pdt_0+PG_SWR-OS_BASE |
|
176 | add eax, 0x1000 |
177 | mov dword [sys_pml2+8192-19*8], sys_proc+PROC.pdt_0+4096+PG_SWR-OS_BASE |
- | 178 | mov dword [sys_pml2+8192-18*8], sys_pml2+PG_SWR |
|
- | 179 | mov dword [sys_pml2+8192-17*8], sys_pml2+4096+PG_SWR |
|
- | 180 | ||
Line 177... | Line -... | ||
177 | dec ecx |
- | |
178 | jnz .map_kernel_tabs |
- | |
179 | - | ||
180 | mov dword [sys_proc-OS_BASE+PROC.pdt_0+(page_tabs shr 20)], sys_proc+PROC.pdt_0+PG_SWR-OS_BASE |
- | |
181 | 181 | mov [sys_pml3-OS_BASE], 0x0070000+PG_READ ;sys_proc+PROC.pdt_0+PG_UWR-OS_BASE |
|
182 | mov edi, (sys_proc+PROC.pdt_0-OS_BASE) |
182 | mov [sys_pml3+8-OS_BASE], 0x0071000+PG_READ ;sys_proc+PROC.pdt_0+4096+PG_UWR-OS_BASE |
Line 183... | Line 183... | ||
183 | lea esi, [edi+(OS_BASE shr 20)] |
183 | mov [sys_pml3+16-OS_BASE],0x0072000+PG_READ ;sys_pml2+PG_SWR |
184 | movsd |
184 | mov [sys_pml3+24-OS_BASE],0x0073000+PG_READ ;sys_pml2+4096+PG_SWR |