Rev 397 | Go to most recent revision | 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 |