Rev 851 | Rev 855 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 851 | Rev 854 | ||
---|---|---|---|
Line 56... | Line 56... | ||
56 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
57 | 57 | ||
Line 58... | Line 58... | ||
58 | include 'macros.inc' |
58 | include 'macros.inc' |
Line 59... | Line 59... | ||
59 | 59 | ||
Line 60... | Line 60... | ||
60 | $Revision: 851 $ |
60 | $Revision: 854 $ |
Line 61... | Line 61... | ||
61 | 61 | ||
Line 112... | Line 112... | ||
112 | public _sys_pdbr |
112 | public _sys_pdbr |
113 | public _gdts |
113 | public _gdts |
114 | public _high_code |
114 | public _high_code |
115 | 115 | ||
Line -... | Line 116... | ||
- | 116 | public __hlt |
|
- | 117 | public _panic_printf |
|
- | 118 | public _printf |
|
- | 119 | public _pg_balloc |
|
- | 120 | public _mem_amount |
|
- | 121 | public @balloc@4 |
|
- | 122 | ||
116 | public __setvars |
123 | public __setvars |
Line 117... | Line 124... | ||
117 | 124 | ||
118 | extrn _enter_bootscreen |
125 | extrn _enter_bootscreen |
Line 119... | Line 126... | ||
119 | extrn _leave_bootscreen |
126 | extrn _leave_bootscreen |
120 | - | ||
121 | extrn _bx_from_load |
127 | |
Line -... | Line 128... | ||
- | 128 | extrn _init |
|
122 | 129 | extrn _init_mm |
|
- | 130 | ||
- | 131 | public _rd_base |
|
- | 132 | public _rd_fat |
|
Line -... | Line 133... | ||
- | 133 | public _rd_fat_end |
|
123 | section '.flat' code readable align 16 |
134 | public _rd_root |
Line -... | Line 135... | ||
- | 135 | public _rd_root_end |
|
Line 124... | Line 136... | ||
124 | 136 | ||
Line 125... | Line 137... | ||
125 | use32 |
137 | extrn _alloc_pages |
Line -... | Line 138... | ||
- | 138 | extrn _alloc_page |
|
Line 126... | Line -... | ||
126 | - | ||
127 | org 0xE0102000 |
- | |
128 | - | ||
129 | - | ||
130 | align 4 |
- | |
131 | - | ||
132 | use32 |
- | |
133 | 139 | ||
134 | - | ||
135 | ; CLEAR 0x280000 - HEAP_BASE |
- | |
136 | - | ||
137 | ; xor eax,eax |
- | |
138 | ; mov edi,0x280000 |
- | |
139 | ; mov ecx,(0x800000-0x280000) / 4 |
- | |
140 | ; cld |
- | |
141 | ; rep stosd |
- | |
142 | - | ||
Line 143... | Line 140... | ||
143 | ; mov edi,0x40000 |
140 | extrn _bx_from_load |
144 | ; mov ecx,(0x90000-0x40000)/4 |
141 | |
Line 145... | Line 142... | ||
145 | ; rep stosd |
142 | section '.flat' code readable align 4096 |
Line 146... | Line -... | ||
146 | - | ||
147 | ; CLEAR KERNEL UNDEFINED GLOBALS |
- | |
148 | ; mov edi, endofcode-OS_BASE |
- | |
149 | ; mov ecx, (uglobals_size/4)+4 |
- | |
150 | ; rep stosd |
- | |
151 | - | ||
152 | - | ||
153 | ; call test_cpu |
- | |
154 | bts [cpu_caps-OS_BASE], CAPS_TSC ;force use rdtsc |
- | |
155 | - | ||
156 | ; call init_BIOS32 |
- | |
157 | - | ||
158 | ; mov dword [sys_pgdir-OS_BASE], PG_LARGE+PG_SW |
- | |
159 | ; mov dword [sys_pgdir-OS_BASE+4], PG_LARGE+PG_SW+4*1024*1024 |
- | |
160 | - | ||
161 | ; mov ecx, 32 |
- | |
162 | ; lea edi, [sys_pgdir-OS_BASE+0xE00] |
- | |
163 | ; mov eax, PG_LARGE+PG_SW |
- | |
164 | ;@@: |
- | |
165 | ; stosd |
- | |
166 | ; add eax, 4*1024*1024 |
- | |
167 | ; loop @B |
- | |
168 | - | ||
169 | ; mov ebx, cr4 |
- | |
170 | ; or ebx, CR4_PSE |
- | |
171 | ; and ebx, not CR4_PAE |
143 | |
Line 172... | Line 144... | ||
172 | ; mov cr4, ebx |
144 | use32 |
173 | 145 | ||
174 | 146 | align 4 |
|
Line 175... | Line 147... | ||
175 | ; mov eax, sys_pgdir-OS_BASE |
147 | |
176 | ; mov ebx, cr0 |
148 | use32 |
Line 195... | Line 167... | ||
195 | MEM_WC equ 1 ;write combined memory |
167 | MEM_WC equ 1 ;write combined memory |
196 | MEM_UC equ 0 ;uncached memory |
168 | MEM_UC equ 0 ;uncached memory |
197 | 169 | ||
Line -... | Line 170... | ||
- | 170 | ||
- | 171 | __hlt: |
|
- | 172 | cli |
|
198 | 173 | @@: |
|
199 | include 'printf.inc' |
174 | hlt |
- | 175 | jmp @B |
|
- | 176 | ||
- | 177 | align 4 |
|
Line -... | Line 178... | ||
- | 178 | _panic_printf: |
|
- | 179 | ||
- | 180 | mov dword [esp], __hlt |
|
- | 181 | jmp _printf |
|
200 | include 'core/mm.asm' |
182 | |
Line 201... | Line 183... | ||
201 | 183 | align 4 |
|
202 | include 'core/init.asm' |
184 | include 'printf.inc' |
203 | 185 | ||
204 | align 4 |
186 | align 4 |
Line 301... | Line 283... | ||
301 | endp |
283 | endp |
302 | 284 | ||
Line 303... | Line 285... | ||
303 | align 4 |
285 | align 4 |
304 | _high_code: |
286 | _high_code: |
- | 287 | ||
305 | mov ax,os_stack |
288 | mov ax,os_stack |
306 | mov dx,app_data |
289 | mov dx,app_data |
307 | mov ss,ax |
290 | mov ss,ax |
308 | mov esp, __os_stack |
291 | mov esp, __os_stack |
Line 309... | Line 292... | ||
309 | 292 | ||
310 | mov ds, dx |
293 | mov ds, dx |
311 | mov es, dx |
294 | mov es, dx |
312 | mov fs, dx |
295 | mov fs, dx |
Line 313... | Line -... | ||
313 | mov gs, dx |
- | |
314 | - | ||
315 | ; push ecx |
- | |
Line 316... | Line 296... | ||
316 | ; push ebx |
296 | mov gs, dx |
317 | 297 | ||
Line 318... | Line 298... | ||
318 | 298 | ||
Line 547... | Line 527... | ||
547 | mov ecx, MSR_AMD_STAR |
527 | mov ecx, MSR_AMD_STAR |
548 | wrmsr |
528 | wrmsr |
549 | .noSYSCALL: |
529 | .noSYSCALL: |
550 | ; ----------------------------------------- |
530 | ; ----------------------------------------- |
551 | 531 | ; LOAD IDT |
|
552 | ; LOAD IDT |
- | |
553 | 532 | ||
Line 554... | Line 533... | ||
554 | call build_interrupt_table |
533 | call _init_idt |
555 | lidt [idtreg] |
- | |
Line 556... | Line 534... | ||
556 | 534 | ||
557 | mov [LFBSize], 0x800000 |
535 | mov [LFBSize], 0x800000 |
558 | call init_LFB |
536 | call init_LFB |
559 | call init_fpu |
537 | call init_fpu |
Line 618... | Line 596... | ||
618 | mov [mem_BACKGROUND],4095 |
596 | mov [mem_BACKGROUND],4095 |
619 | stdcall kernel_alloc, [mem_BACKGROUND] |
597 | stdcall kernel_alloc, [mem_BACKGROUND] |
620 | mov [img_background], eax |
598 | mov [img_background], eax |
621 | 599 | ||
Line 622... | Line 600... | ||
622 | mov [SLOT_BASE + 256 + APPDATA.dir_table], _sys_pdbr - OS_BASE |
600 | mov [SLOT_BASE + 256 + APPDATA.dir_table], _sys_pdbr + (0x100000000-OS_BASE) |
Line 623... | Line 601... | ||
623 | 601 | ||
Line 624... | Line 602... | ||
624 | ; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f |
602 | ; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f |
Line 647... | Line 625... | ||
647 | ;!!!!!!!!!!!!!!!!!!!!!!!!!! |
625 | ;!!!!!!!!!!!!!!!!!!!!!!!!!! |
648 | include 'detect/disks.inc' |
626 | include 'detect/disks.inc' |
649 | ;!!!!!!!!!!!!!!!!!!!!!!!!!! |
627 | ;!!!!!!!!!!!!!!!!!!!!!!!!!! |
Line 650... | Line -... | ||
650 | - | ||
651 | xchg bx, bx |
- | |
652 | 628 | ||
Line 653... | Line 629... | ||
653 | call Parser_params |
629 | call Parser_params |
Line 654... | Line 630... | ||
654 | 630 |