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 |