Subversion Repositories Kolibri OS

Rev

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