Rev 346 | Rev 358 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 346 | Rev 357 | ||
---|---|---|---|
Line 354... | Line 354... | ||
354 | jne no_mode_0x12 |
354 | jne no_mode_0x12 |
355 | mov [0xe020],dword VGA_putpixel |
355 | mov [0xe020],dword VGA_putpixel |
356 | mov [0xe024],dword Vesa20_getpixel32 |
356 | mov [0xe024],dword Vesa20_getpixel32 |
357 | no_mode_0x12: |
357 | no_mode_0x12: |
Line 358... | Line -... | ||
358 | - | ||
359 | ; MEMORY MODEL |
- | |
360 | - | ||
361 | call mem_test |
- | |
362 | - | ||
363 | mov [MEM_AMOUNT], eax |
- | |
364 | - | ||
365 | mov [pg_data.mem_amount], eax |
- | |
366 | mov [pg_data.kernel_max], eax |
- | |
367 | - | ||
368 | shr eax, 12 |
- | |
369 | mov edx, eax |
- | |
370 | mov [pg_data.pages_count], eax |
- | |
371 | mov [pg_data.kernel_pages], eax |
- | |
372 | - | ||
373 | shr eax, 3 |
- | |
374 | mov [pg_data.pagemap_size], eax |
- | |
375 | - | ||
376 | shr edx, 10 |
- | |
377 | cmp edx, 3 |
- | |
378 | ja @f |
- | |
379 | inc edx ;at least 4Mb for kernel heap |
- | |
380 | @@: |
- | |
381 | mov [pg_data.kernel_tables], edx |
- | |
382 | - | ||
383 | ; ENABLE PAGING |
- | |
384 | 358 | ||
385 | call test_cpu |
359 | call test_cpu |
386 | ; btr [cpu_caps], CAPS_SSE ;test: dont't use sse code |
360 | ; btr [cpu_caps], CAPS_SSE ;test: dont't use sse code |
Line 387... | Line 361... | ||
387 | ; btr [cpu_caps], CAPS_SSE2 ;test: don't use sse2 |
361 | ; btr [cpu_caps], CAPS_SSE2 ;test: don't use sse2 |
Line 391... | Line 365... | ||
391 | ; btr [cpu_caps], CAPS_PSE ;test: don't use large pages |
365 | ; btr [cpu_caps], CAPS_PSE ;test: don't use large pages |
392 | ; btr [cpu_caps], CAPS_PGE ;test: don't use global pages |
366 | ; btr [cpu_caps], CAPS_PGE ;test: don't use global pages |
393 | ; btr [cpu_caps], CAPS_MTRR ;test: don't use MTRR |
367 | ; btr [cpu_caps], CAPS_MTRR ;test: don't use MTRR |
394 | bts [cpu_caps], CAPS_TSC ;force use rdtsc |
368 | bts [cpu_caps], CAPS_TSC ;force use rdtsc |
Line -... | Line 369... | ||
- | 369 | ||
- | 370 | ; MEMORY MODEL |
|
395 | 371 | call mem_test |
|
396 | call init_memEx |
372 | call init_mem |
Line -... | Line 373... | ||
- | 373 | call init_page_map |
|
397 | call init_page_map |
374 | |
398 | 375 | ; ENABLE PAGING |
|
Line 399... | Line 376... | ||
399 | mov eax, sys_pgdir |
376 | mov eax, sys_pgdir |
400 | mov cr3, eax |
377 | mov cr3, eax |
401 | 378 | ||
Line 402... | Line 379... | ||
402 | mov eax,cr0 |
379 | mov eax,cr0 |
- | 380 | or eax,CR0_PG |
|
- | 381 | mov cr0,eax |
|
403 | or eax,CR0_PG |
382 | |
404 | mov cr0,eax |
383 | call init_kernel_heap |
405 | 384 | stdcall kernel_alloc, 0x2000 |
|
Line 406... | Line 385... | ||
406 | call init_kernel_heap |
385 | mov [os_stack], eax |
Line 578... | Line 557... | ||
578 | ; SET UP OS TASK |
557 | ; SET UP OS TASK |
Line 579... | Line 558... | ||
579 | 558 | ||
580 | mov esi,boot_setostask |
559 | mov esi,boot_setostask |
Line 581... | Line 560... | ||
581 | call boot_log |
560 | call boot_log |
582 | 561 | ||
583 | mov eax, [fpu_data] |
562 | mov eax, fpu_data |
584 | mov dword [0x80000+APPDATA.fpu_state], eax |
563 | mov dword [0x80000+APPDATA.fpu_state], eax |
Line 585... | Line 564... | ||
585 | mov dword [0x80000+APPDATA.fpu_handler], 0 |
564 | mov dword [0x80000+APPDATA.fpu_handler], 0 |
Line 586... | Line 565... | ||
586 | mov dword [0x80000+APPDATA.sse_handler], 0 |
565 | mov dword [0x80000+APPDATA.sse_handler], 0 |
587 | 566 | ||
588 | ; name for OS/IDLE process |
567 | ; name for OS/IDLE process |
- | 568 | ||
- | 569 | mov dword [0x80000+256+APPDATA.app_name], dword 'OS/I' |
|
589 | 570 | mov dword [0x80000+256+APPDATA.app_name+4], dword 'DLE ' |
|
- | 571 | mov edi, [os_stack] |
|
- | 572 | mov dword [0x80000+256+APPDATA.pl0_stack], edi |
|
- | 573 | add edi, 0x2000-512 |
|
- | 574 | mov dword [0x80000+256+APPDATA.fpu_state], edi |
|
- | 575 | ||
- | 576 | mov esi, fpu_data |
|
590 | mov dword [0x80000+256+APPDATA.app_name], dword 'OS/I' |
577 | mov ecx, 512/4 |
591 | mov dword [0x80000+256+APPDATA.app_name+4], dword 'DLE ' |
578 | cld |
Line -... | Line 579... | ||
- | 579 | rep movsd |
|
- | 580 | ||
- | 581 | mov dword [0x80000+256+APPDATA.fpu_handler], 0 |
|
592 | mov ebx, [def_cursor] |
582 | mov dword [0x80000+256+APPDATA.sse_handler], 0 |
593 | mov dword [0x80000+256+APPDATA.cursor], ebx |
583 | |
594 | mov dword [0x80000+256+APPDATA.fpu_handler], 0 |
584 | mov ebx, [def_cursor] |
Line 595... | Line -... | ||
595 | mov dword [0x80000+256+APPDATA.sse_handler], 0 |
- | |
596 | - | ||
597 | mov ebx, PROC_BASE+256+APP_OBJ_OFFSET |
- | |
598 | mov dword [0x80000+256+APPDATA.fd_obj], ebx |
- | |
599 | mov dword [0x80000+256+APPDATA.bk_obj], ebx |
- | |
600 | - | ||
601 | - | ||
602 | ;set fpu save area |
- | |
603 | mov esi, eax |
- | |
604 | bt [cpu_caps], CAPS_SSE |
- | |
605 | jnc .no_sse |
- | |
606 | - | ||
607 | lea edi, [eax+512] |
- | |
608 | mov dword [PROC_BASE+256+APPDATA.fpu_state], edi |
- | |
609 | mov ecx, 512/4 |
- | |
610 | jmp @F |
- | |
611 | .no_sse: |
- | |
612 | lea edi, [eax+112] |
585 | mov dword [0x80000+256+APPDATA.cursor], ebx |
613 | mov dword [PROC_BASE+256+APPDATA.fpu_state], edi |
586 | |
614 | mov ecx, 112/4 |
587 | mov ebx, PROC_BASE+256+APP_OBJ_OFFSET |
615 | @@: |
588 | mov dword [0x80000+256+APPDATA.fd_obj], ebx |
Line 630... | Line 603... | ||
630 | mov [edi+TSS._ss0], os_data |
603 | mov [edi+TSS._ss0], os_data |
631 | mov eax,cr3 |
604 | mov eax,cr3 |
632 | mov [edi+TSS._cr3],eax |
605 | mov [edi+TSS._cr3],eax |
633 | mov [edi+TSS._eip],osloop |
606 | mov [edi+TSS._eip],osloop |
634 | mov [edi+TSS._eflags],dword 0x11202 ; sti and resume |
607 | mov [edi+TSS._eflags],dword 0x11202 ; sti and resume |
- | 608 | mov eax, [os_stack] |
|
- | 609 | add eax, 0x2000-512 |
|
635 | mov [edi+TSS._esp],sysint_stack_data + 4096*2 ; uses slot 1 stack |
610 | mov [edi+TSS._esp], eax |
636 | mov [edi+TSS._cs],os_code |
611 | mov [edi+TSS._cs],os_code |
637 | mov [edi+TSS._ss],os_data |
612 | mov [edi+TSS._ss],os_data |
638 | mov [edi+TSS._ds],os_data |
613 | mov [edi+TSS._ds],os_data |
639 | mov [edi+TSS._es],os_data |
614 | mov [edi+TSS._es],os_data |
640 | mov [edi+TSS._fs],os_data |
615 | mov [edi+TSS._fs],os_data |