VirtualBox

Changeset 61109 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
May 20, 2016 3:19:47 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
107384
Message:

CPUMRZA.asm,CPUMInternal.mac: Use pStateRC in raw-mode context (RC panic fix) and fixed typo in cpumRZSaveGuestSseRegisters.

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMRZ/CPUMRZA.asm

    r61068 r61109  
    212212        SEH64_SET_FRAME_xBP 0
    213213SEH64_END_PROLOGUE
    214 %ifdef VBOX_WITH_KERNEL_USING_XMM
     214%ifndef VBOX_WITH_KERNEL_USING_XMM
    215215
    216216        ;
    217217        ; Load xCX with the guest pXStateR0.
    218218        ;
    219 %ifdef RT_ARCH_AMD64
    220  %ifdef ASM_CALL64_MSC
     219 %ifdef RT_ARCH_AMD64
     220  %ifdef ASM_CALL64_MSC
    221221        mov     xCX, [rcx + CPUMCPU.Guest.pXStateR0]
    222  %else
     222  %else
    223223        mov     xCX, [rdi + CPUMCPU.Guest.pXStateR0]
    224  %endif
    225 %else
     224  %endif
     225 %else
    226226        mov     ecx, dword [ebp + 8]
    227227        mov     ecx, [ecx + CPUMCPU.Guest.pXStateR0]
    228 %endif
     228 %endif
    229229
    230230        ;
     
    239239        movdqa  [xCX + X86FXSTATE.xmm6 ], xmm6
    240240        movdqa  [xCX + X86FXSTATE.xmm7 ], xmm7
     241 %if ARCH_BITS == 64
    241242        movdqa  [xCX + X86FXSTATE.xmm8 ], xmm8
    242243        movdqa  [xCX + X86FXSTATE.xmm9 ], xmm9
     
    247248        movdqa  [xCX + X86FXSTATE.xmm14], xmm14
    248249        movdqa  [xCX + X86FXSTATE.xmm15], xmm15
     250 %endif
    249251%endif ; !VBOX_WITH_KERNEL_USING_XMM
    250252
  • trunk/src/VBox/VMM/include/CPUMInternal.mac

    r61068 r61109  
    1919%include "VBox/vmm/cpum.mac"
    2020
     21;; Check sanity.
     22%ifdef VBOX_WITH_KERNEL_USING_XMM
     23 %ifndef IN_RING0
     24  %error "What? We've got code assuming VBOX_WITH_KERNEL_USING_XMM is only defined in ring-0!"
     25 %endif
     26%endif
    2127
    2228;; For numeric expressions
     
    593599        ; Load a couple of registers we'll use later in all branches.
    594600        ;
     601 %ifdef IN_RING0
    595602        mov     pXState, [pCpumCpu + CPUMCPU.Host.pXStateR0]
     603 %elifdef IN_RC
     604        mov     pXState, [pCpumCpu + CPUMCPU.Host.pXStateRC]
     605 %else
     606  %error "Unsupported context!"
     607 %endif
    596608        mov     eax, [pCpumCpu + CPUMCPU.Host.fXStateMask]
    597609
     
    604616        ; XSAVE
    605617        mov     edx, [pCpumCpu + CPUMCPU.Host.fXStateMask + 4]
    606 %ifdef RT_ARCH_AMD64
     618 %ifdef RT_ARCH_AMD64
    607619        o64 xsave [pXState]
    608 %else
     620 %else
    609621        xsave   [pXState]
    610 %endif
     622 %endif
    611623        jmp     %%host_done
    612624
    613625        ; FXSAVE
    614626%%host_fxsave:
    615 %ifdef RT_ARCH_AMD64
     627 %ifdef RT_ARCH_AMD64
    616628        o64 fxsave [pXState]            ; Use explicit REX prefix. See @bugref{6398}.
    617 %else
     629 %else
    618630        fxsave  [pXState]
    619 %endif
     631 %endif
    620632
    621633%%host_done:
     
    634646        ; Load a couple of registers we'll use later in all branches.
    635647        ;
     648 %ifdef IN_RING0
    636649        mov     pXState, [pCpumCpu + CPUMCPU.Host.pXStateR0]
     650 %elifdef IN_RC
     651        mov     pXState, [pCpumCpu + CPUMCPU.Host.pXStateRC]
     652 %else
     653  %error "Unsupported context!"
     654 %endif
    637655        mov     eax, [pCpumCpu + CPUMCPU.Host.fXStateMask]
    638656
     
    645663        ; XRSTOR
    646664        mov     edx, [pCpumCpu + CPUMCPU.Host.fXStateMask + 4]
    647 %ifdef RT_ARCH_AMD64
     665 %ifdef RT_ARCH_AMD64
    648666        o64 xrstor [pXState]
    649 %else
     667 %else
    650668        xrstor  [pXState]
    651 %endif
     669 %endif
    652670        jmp     %%host_done
    653671
    654672        ; FXRSTOR
    655673%%host_fxrstor:
    656 %ifdef RT_ARCH_AMD64
     674 %ifdef RT_ARCH_AMD64
    657675        o64 fxrstor [pXState]           ; Use explicit REX prefix. See @bugref{6398}.
    658 %else
     676 %else
    659677        fxrstor [pXState]
    660 %endif
     678 %endif
    661679
    662680%%host_done:
     
    716734        ; Load a couple of registers we'll use later in all branches.
    717735        ;
     736 %ifdef IN_RING0
    718737        mov     pXState, [pCpumCpu + CPUMCPU.Guest.pXStateR0]
     738 %elifdef IN_RC
     739        mov     pXState, [pCpumCpu + CPUMCPU.Guest.pXStateRC]
     740 %else
     741  %error "Unsupported context!"
     742 %endif
    719743        mov     eax, [pCpumCpu + CPUMCPU.Guest.fXStateMask]
    720744
     
    727751        ; XSAVE
    728752        mov     edx, [pCpumCpu + CPUMCPU.Guest.fXStateMask + 4]
    729 %ifdef VBOX_WITH_KERNEL_USING_XMM
     753 %ifdef VBOX_WITH_KERNEL_USING_XMM
    730754        and     eax, ~CPUM_VOLATILE_XSAVE_GUEST_COMPONENTS ; Already saved in HMR0A.asm.
    731 %endif
    732 %ifdef RT_ARCH_AMD64
     755 %endif
     756 %ifdef RT_ARCH_AMD64
    733757        o64 xsave [pXState]
    734 %else
     758 %else
    735759        xsave   [pXState]
    736 %endif
     760 %endif
    737761        jmp     %%guest_done
    738762
     
    784808        ; Load a couple of registers we'll use later in all branches.
    785809        ;
     810 %ifdef IN_RING0
    786811        mov     pXState, [pCpumCpu + CPUMCPU.Guest.pXStateR0]
     812 %elifdef IN_RC
     813        mov     pXState, [pCpumCpu + CPUMCPU.Guest.pXStateRC]
     814 %else
     815  %error "Unsupported context!"
     816 %endif
    787817        mov     eax, [pCpumCpu + CPUMCPU.Guest.fXStateMask]
    788818
     
    795825        ; XRSTOR
    796826        mov     edx, [pCpumCpu + CPUMCPU.Guest.fXStateMask + 4]
    797 %ifdef VBOX_WITH_KERNEL_USING_XMM
     827 %ifdef VBOX_WITH_KERNEL_USING_XMM
    798828        and     eax, ~CPUM_VOLATILE_XSAVE_GUEST_COMPONENTS ; Will be loaded by HMR0A.asm.
    799 %endif
    800 %ifdef RT_ARCH_AMD64
     829 %endif
     830 %ifdef RT_ARCH_AMD64
    801831        o64 xrstor [pXState]
    802 %else
     832 %else
    803833        xrstor  [pXState]
    804 %endif
     834 %endif
    805835        jmp     %%guest_done
    806836
Note: See TracChangeset for help on using the changeset viewer.

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