Subversion Repositories Kolibri OS

Rev

Rev 164 | Rev 170 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 164 Rev 168
Line 118... Line 118...
118
 
118
 
Line 119... Line 119...
119
 
119
 
Line 120... Line 120...
120
 
120
 
Line 121... Line 121...
121
; CR0 Flags - Protected mode and Paging
121
; CR0 Flags - Protected mode and Paging
Line 398... Line 398...
398
 
398
 
399
           mov eax, sys_pgdir     ;+PG_NOCACHE
399
           mov eax, sys_pgdir     ;+PG_NOCACHE
Line 400... Line 400...
400
           mov cr3, eax
400
           mov cr3, eax
401
 
401
 
402
           mov     eax,cr0
402
           mov eax,cr0
Line 403... Line 403...
403
           or      eax,0x80000000
403
           or eax,CR0_PG
404
           mov     cr0,eax
404
           mov cr0,eax
405
 
405
 
Line 445... Line 445...
445
           mov edi, eax
445
           mov edi, eax
446
           mov esi, szKernel
446
           mov esi, szKernel
447
           mov ecx, 16
447
           mov ecx, 16
448
           rep movsb
448
           rep movsb
Line -... Line 449...
-
 
449
 
-
 
450
           clts
-
 
451
           fninit
449
 
452
 
450
           bt [cpu_caps], CAPS_FXSR
453
           bt [cpu_caps], CAPS_FXSR
Line 451... Line 454...
451
           jnc .no_FXSR
454
           jnc .no_FXSR
452
 
455
 
-
 
456
           stdcall kernel_alloc, 512*256
453
           stdcall kernel_alloc, 512*256
457
           mov [fpu_data], eax
-
 
458
 
454
           mov [fpu_data], eax
459
           mov ebx, cr4
455
           mov ebx, cr4
460
           mov ecx, cr0
-
 
461
           or ebx, CR4_OSFXSR+CR4_OSXMMEXPT
-
 
462
           mov cr4, ebx
-
 
463
 
-
 
464
           and ecx, not (CR0_MP+CR0_EM)
-
 
465
           or ecx, CR0_NE
-
 
466
           mov cr0, ecx
-
 
467
 
-
 
468
           mov dword [esp-4], SSE_INIT
-
 
469
           ldmxcsr [esp-4]
-
 
470
 
-
 
471
           xorps xmm0, xmm0
-
 
472
           xorps xmm1, xmm1
-
 
473
           xorps xmm2, xmm2
-
 
474
           xorps xmm3, xmm3
-
 
475
           xorps xmm4, xmm4
-
 
476
           xorps xmm5, xmm5
-
 
477
           xorps xmm6, xmm6
456
           or ebx, CR4_OSFXSR
478
           xorps xmm7, xmm7
457
           mov cr4, ebx
479
 
458
           jmp .clts
480
           jmp .set_cr
459
.no_FXSR:
481
.no_FXSR:
460
           stdcall kernel_alloc, 112*256
482
           stdcall kernel_alloc, 112*256
-
 
483
           mov [fpu_data], eax
461
           mov [fpu_data], eax
484
           mov ebx, cr4
-
 
485
           mov ecx, cr0
-
 
486
           and ebx, not (CR4_OSFXSR+CR4_OSXMMEXPT)
-
 
487
           and ecx, not CR0_EM
462
           mov ebx, cr4
488
           or ecx, CR0_MP+CR0_NE
463
           and ebx, not (CR4_OSFXSR+CR4_OSXMMEXPT)
489
           mov cr0, ecx
464
           mov cr4, ebx
-
 
465
.clts:
-
 
466
           clts
-
 
467
           fninit
490
           mov cr4, ebx
468
 
491
.set_cr:
469
           mov edi, irq_tab
492
           mov edi, irq_tab
470
           xor eax, eax
493
           xor eax, eax