VirtualBox

Changeset 15371 in vbox for trunk/src/VBox/VMM/VMMGC


Ignore:
Timestamp:
Dec 12, 2008 2:41:28 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
40811
Message:

More paranoia

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMGC/HWACCMGCA.asm

    r15361 r15371  
    133133    ; Flush the VMCS write cache first (before any other vmreads/vmwrites!)
    134134    mov     rbx, [rbp + 24 + 8]                             ; pCache
     135
     136%ifdef DEBUG
     137    mov     rax, [rbp + 8 + 8]                              ; pPageCpuPhys
     138    mov     [rbx + VMCSCACHE.TestIn.pPageCpuPhys], rax
     139    mov     rax, [rbp + 16 + 8]                             ; pVMCSPhys
     140    mov     [rbx + VMCSCACHE.TestIn.pVMCSPhys], rax
     141    mov     [rbx + VMCSCACHE.TestIn.pCache], rbx
     142    mov     [rbx + VMCSCACHE.TestIn.pCtx], rsi
     143%endif
     144
    135145    mov     ecx, [xBX + VMCSCACHE.Write.cValidEntries]
    136146    cmp     ecx, 0
     
    143153.cached_write:
    144154    mov     eax, [xBX + VMCSCACHE.Write.aField + xCX*4]
    145     vmwrite xAX, [xBX + VMCSCACHE.Write.aFieldVal + xCX*8]
     155    vmwrite xAX, qword [xBX + VMCSCACHE.Write.aFieldVal + xCX*8]
    146156    inc     xCX
    147157    cmp     xCX, xDX
     
    284294
    285295%ifdef VMX_USE_CACHED_VMCS_ACCESSES
    286     pop     xDX         ; saved pCache
    287    
    288     mov     ecx, [xDX + VMCSCACHE.Read.cValidEntries]
     296    pop     rdi         ; saved pCache
     297
     298%ifdef DEBUG
     299    mov     [rdi + VMCSCACHE.TestOut.pCache], rdi
     300    mov     [rdi + VMCSCACHE.TestOut.pCtx], rsi
     301%endif
     302   
     303    mov     ecx, [rdi + VMCSCACHE.Read.cValidEntries]
    289304    cmp     ecx, 0  ; can't happen
    290305    je      .no_cached_reads
     
    294309.cached_read:
    295310    dec     xCX
    296     mov     eax, [xDX + VMCSCACHE.Read.aField + xCX*4]
    297     vmread  [xDX + VMCSCACHE.Read.aFieldVal + xCX*8], xAX
    298     cmp      xCX, 0
     311    mov     eax, [rdi + VMCSCACHE.Read.aField + xCX*4]
     312    vmread  qword [rdi + VMCSCACHE.Read.aFieldVal + xCX*8], xAX
     313    cmp     xCX, 0
    299314    jnz     .cached_read
    300315.no_cached_reads:
     
    303318    ; Restore segment registers
    304319    MYPOPSEGS rax
    305 
    306     mov     eax, VINF_SUCCESS
    307320
    308321.vmstart64_end:
     
    313326    vmwrite  rbx, rdx
    314327
     328%ifdef DEBUG
     329    mov     rax, [rsp]                             ; pVMCSPhys
     330    mov     [rdi + VMCSCACHE.TestOut.pVMCSPhys], rax
     331%endif
     332
    315333    ; Write back the data and disable the VMCS
    316334    vmclear qword [rsp]  ;Pushed pVMCS
    317335    add     rsp, 8
     336
     337    mov     eax, VINF_SUCCESS
    318338
    319339.vmstart64_vmoff_end:
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