Changeset 61109 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 20, 2016 3:19:47 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 107384
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMRZ/CPUMRZA.asm
r61068 r61109 212 212 SEH64_SET_FRAME_xBP 0 213 213 SEH64_END_PROLOGUE 214 %if def VBOX_WITH_KERNEL_USING_XMM214 %ifndef VBOX_WITH_KERNEL_USING_XMM 215 215 216 216 ; 217 217 ; Load xCX with the guest pXStateR0. 218 218 ; 219 %ifdef RT_ARCH_AMD64220 %ifdef ASM_CALL64_MSC219 %ifdef RT_ARCH_AMD64 220 %ifdef ASM_CALL64_MSC 221 221 mov xCX, [rcx + CPUMCPU.Guest.pXStateR0] 222 %else222 %else 223 223 mov xCX, [rdi + CPUMCPU.Guest.pXStateR0] 224 %endif225 %else224 %endif 225 %else 226 226 mov ecx, dword [ebp + 8] 227 227 mov ecx, [ecx + CPUMCPU.Guest.pXStateR0] 228 %endif228 %endif 229 229 230 230 ; … … 239 239 movdqa [xCX + X86FXSTATE.xmm6 ], xmm6 240 240 movdqa [xCX + X86FXSTATE.xmm7 ], xmm7 241 %if ARCH_BITS == 64 241 242 movdqa [xCX + X86FXSTATE.xmm8 ], xmm8 242 243 movdqa [xCX + X86FXSTATE.xmm9 ], xmm9 … … 247 248 movdqa [xCX + X86FXSTATE.xmm14], xmm14 248 249 movdqa [xCX + X86FXSTATE.xmm15], xmm15 250 %endif 249 251 %endif ; !VBOX_WITH_KERNEL_USING_XMM 250 252 -
trunk/src/VBox/VMM/include/CPUMInternal.mac
r61068 r61109 19 19 %include "VBox/vmm/cpum.mac" 20 20 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 21 27 22 28 ;; For numeric expressions … … 593 599 ; Load a couple of registers we'll use later in all branches. 594 600 ; 601 %ifdef IN_RING0 595 602 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 596 608 mov eax, [pCpumCpu + CPUMCPU.Host.fXStateMask] 597 609 … … 604 616 ; XSAVE 605 617 mov edx, [pCpumCpu + CPUMCPU.Host.fXStateMask + 4] 606 %ifdef RT_ARCH_AMD64618 %ifdef RT_ARCH_AMD64 607 619 o64 xsave [pXState] 608 %else620 %else 609 621 xsave [pXState] 610 %endif622 %endif 611 623 jmp %%host_done 612 624 613 625 ; FXSAVE 614 626 %%host_fxsave: 615 %ifdef RT_ARCH_AMD64627 %ifdef RT_ARCH_AMD64 616 628 o64 fxsave [pXState] ; Use explicit REX prefix. See @bugref{6398}. 617 %else629 %else 618 630 fxsave [pXState] 619 %endif631 %endif 620 632 621 633 %%host_done: … … 634 646 ; Load a couple of registers we'll use later in all branches. 635 647 ; 648 %ifdef IN_RING0 636 649 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 637 655 mov eax, [pCpumCpu + CPUMCPU.Host.fXStateMask] 638 656 … … 645 663 ; XRSTOR 646 664 mov edx, [pCpumCpu + CPUMCPU.Host.fXStateMask + 4] 647 %ifdef RT_ARCH_AMD64665 %ifdef RT_ARCH_AMD64 648 666 o64 xrstor [pXState] 649 %else667 %else 650 668 xrstor [pXState] 651 %endif669 %endif 652 670 jmp %%host_done 653 671 654 672 ; FXRSTOR 655 673 %%host_fxrstor: 656 %ifdef RT_ARCH_AMD64674 %ifdef RT_ARCH_AMD64 657 675 o64 fxrstor [pXState] ; Use explicit REX prefix. See @bugref{6398}. 658 %else676 %else 659 677 fxrstor [pXState] 660 %endif678 %endif 661 679 662 680 %%host_done: … … 716 734 ; Load a couple of registers we'll use later in all branches. 717 735 ; 736 %ifdef IN_RING0 718 737 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 719 743 mov eax, [pCpumCpu + CPUMCPU.Guest.fXStateMask] 720 744 … … 727 751 ; XSAVE 728 752 mov edx, [pCpumCpu + CPUMCPU.Guest.fXStateMask + 4] 729 %ifdef VBOX_WITH_KERNEL_USING_XMM753 %ifdef VBOX_WITH_KERNEL_USING_XMM 730 754 and eax, ~CPUM_VOLATILE_XSAVE_GUEST_COMPONENTS ; Already saved in HMR0A.asm. 731 %endif732 %ifdef RT_ARCH_AMD64755 %endif 756 %ifdef RT_ARCH_AMD64 733 757 o64 xsave [pXState] 734 %else758 %else 735 759 xsave [pXState] 736 %endif760 %endif 737 761 jmp %%guest_done 738 762 … … 784 808 ; Load a couple of registers we'll use later in all branches. 785 809 ; 810 %ifdef IN_RING0 786 811 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 787 817 mov eax, [pCpumCpu + CPUMCPU.Guest.fXStateMask] 788 818 … … 795 825 ; XRSTOR 796 826 mov edx, [pCpumCpu + CPUMCPU.Guest.fXStateMask + 4] 797 %ifdef VBOX_WITH_KERNEL_USING_XMM827 %ifdef VBOX_WITH_KERNEL_USING_XMM 798 828 and eax, ~CPUM_VOLATILE_XSAVE_GUEST_COMPONENTS ; Will be loaded by HMR0A.asm. 799 %endif800 %ifdef RT_ARCH_AMD64829 %endif 830 %ifdef RT_ARCH_AMD64 801 831 o64 xrstor [pXState] 802 %else832 %else 803 833 xrstor [pXState] 804 %endif834 %endif 805 835 jmp %%guest_done 806 836
Note:
See TracChangeset
for help on using the changeset viewer.