Subversion Repositories Kolibri OS

Rev

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