Changeset 15354 in vbox for trunk/src/VBox/VMM/VMMGC
- Timestamp:
- Dec 12, 2008 8:51:41 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 40788
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMGC/HWACCMGCA.asm
r15332 r15354 127 127 push qword [rbp + 16 + 8]; 128 128 129 ;/* Save segment registers */ 130 MYPUSHSEGS rax 131 132 %ifdef VMX_USE_CACHED_VMCS_ACCESSES 133 ; Flush the VMCS write cache first (before any other vmreads/vmwrites!) 134 mov rbx, [rbp + 24 + 8] ; pCache 135 mov ecx, [xBX + VMCSCACHE.Write.cValidEntries] 136 cmp ecx, 0 137 je .no_cached_writes 138 mov edx, ecx 139 mov ecx, 0 140 jmp .cached_write 141 142 ALIGN(16) 143 .cached_write: 144 mov eax, [xBX + VMCSCACHE.Write.aField + xCX*4] 145 vmwrite xAX, [xBX + VMCSCACHE.Write.aFieldVal + xCX*8] 146 inc xCX 147 cmp xCX, xDX 148 jl .cached_write 149 150 mov dword [xBX + VMCSCACHE.Write.cValidEntries], 0 151 .no_cached_writes: 152 153 ; Save the pCache pointer 154 push xBX 155 %endif 156 129 157 ; Signal that we're in 64 bits mode now! 130 158 mov eax, VMX_VMCS_CTRL_EXIT_CONTROLS … … 179 207 ; * 180 208 ; */ 181 182 ;/* Save segment registers */183 MYPUSHSEGS rax184 185 186 %ifdef VMX_USE_CACHED_VMCS_ACCESSES187 mov rbx, [rbp + 24 + 8] ; pCache188 mov ecx, [xBX + VMCSCACHE.Write.cValidEntries]189 cmp ecx, 0190 je .no_cached_writes191 mov edx, ecx192 mov ecx, 0193 jmp .cached_write194 195 ALIGN(16)196 .cached_write:197 mov eax, [xBX + VMCSCACHE.Write.aField + xCX*4]198 vmwrite xAX, [xBX + VMCSCACHE.Write.aFieldVal + xCX*8]199 inc xCX200 cmp xCX, xDX201 jl .cached_write202 203 mov dword [xBX + VMCSCACHE.Write.cValidEntries], 0204 .no_cached_writes:205 206 ; Save the pCache pointer207 push xBX208 %endif209 209 210 210 ; Load the guest LSTAR, CSTAR, SFMASK & KERNEL_GSBASE MSRs
Note:
See TracChangeset
for help on using the changeset viewer.