VirtualBox

忽略:
時間撮記:
2008-7-16 上午09:22:28 (16 年 以前)
作者:
vboxsync
訊息:

Save the FPU control word and MXCSR on entry and restore them afterwards. (VT-x & AMD-V)
Security measure so the guest can't cause fpu/sse exceptions as we no longer restore the entire
host fpu state.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMAll/CPUMAllA.asm

    r10648 r10687  
    291291; @param    pCtx  x86:[esp+4] GCC:rdi MSC:rcx     CPUMCTX pointer
    292292;
     293align 16
    293294BEGINPROC   CPUMLoadXMMAsm
    294295%ifdef RT_ARCH_AMD64
     
    334335; @param    pCtx  x86:[esp+4] GCC:rdi MSC:rcx     CPUMCTX pointer
    335336;
     337align 16
    336338BEGINPROC   CPUMSaveXMMAsm
    337339%ifdef RT_ARCH_AMD64
     
    371373ENDPROC     CPUMSaveXMMAsm
    372374
     375
     376;;
     377; Set the FPU control word; clearing exceptions first
     378;
     379; @param  u16FCW    x86:[esp+4] GCC:rdi MSC:rcx     New FPU control word
     380align 16
     381BEGINPROC CPUMSetFCW
     382%ifdef RT_ARCH_AMD64
     383 %ifdef RT_OS_WINDOWS
     384    mov     xAX, rcx
     385 %else
     386    mov     xAX, rdi
     387 %endif
     388%else
     389    mov     xAX, dword [esp + 4]
     390%endif
     391    fnclex
     392    push    xAX
     393    fldcw   [xSP]
     394    pop     xAX
     395    ret
     396ENDPROC   CPUMSetFCW
     397
     398;;
     399; Get the FPU control word
     400;
     401align 16
     402BEGINPROC CPUMGetFCW
     403    fnstcw  [xSP - 8]
     404    mov     ax, word [xSP - 8]
     405    ret
     406ENDPROC   CPUMGetFCW
     407
     408
     409;;
     410; Set the MXCSR;
     411;
     412; @param  u32MXCSR    x86:[esp+4] GCC:rdi MSC:rcx     New MXCSR
     413align 16
     414BEGINPROC CPUMSetMXCSR
     415%ifdef RT_ARCH_AMD64
     416 %ifdef RT_OS_WINDOWS
     417    mov     xAX, rcx
     418 %else
     419    mov     xAX, rdi
     420 %endif
     421%else
     422    mov     xAX, dword [esp + 4]
     423%endif
     424    push    xAX
     425    ldmxcsr [xSP]
     426    pop     xAX
     427    ret
     428ENDPROC   CPUMSetMXCSR
     429
     430;;
     431; Get the MXCSR
     432;
     433align 16
     434BEGINPROC CPUMGetMXCSR
     435    stmxcsr [xSP - 8]
     436    mov     eax, dword [xSP - 8]
     437    ret
     438ENDPROC   CPUMGetMXCSR
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette