VirtualBox

Changeset 57549 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 26, 2015 11:39:20 AM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
102361
Message:

VMM/HMR0A: Avoid 2 conditional branches in the VT-x vmlaunch/vmresume success code path. Add missing error handling for vmresume.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMR0A.asm

    r57493 r57549  
    13911391    ; Resume or start VM?
    13921392    cmp     xDI, 0                  ; fResume
    1393     je      .vmlaunch_launch
    13941393
    13951394    ; Load guest edi & esi.
     
    13971396    mov     esi, [xSI + CPUMCTX.esi]
    13981397
     1398    je      .vmlaunch_launch
     1399
    13991400    vmresume
     1401    jc      near .vmxstart_invalid_vmcs_ptr
     1402    jz      near .vmxstart_start_failed
    14001403    jmp     .vmlaunch_done;      ; Here if vmresume detected a failure.
    14011404
    14021405.vmlaunch_launch:
    1403     ; Save guest edi & esi.
    1404     mov     edi, [xSI + CPUMCTX.edi]
    1405     mov     esi, [xSI + CPUMCTX.esi]
    1406 
    14071406    vmlaunch
     1407    jc      near .vmxstart_invalid_vmcs_ptr
     1408    jz      near .vmxstart_start_failed
    14081409    jmp     .vmlaunch_done;      ; Here if vmlaunch detected a failure.
    14091410
    14101411ALIGNCODE(16) ;; @todo YASM BUG - this alignment is wrong on darwin, it's 1 byte off.
    14111412.vmlaunch_done:
    1412     jc      near .vmxstart_invalid_vmcs_ptr
    1413     jz      near .vmxstart_start_failed
    1414 
    14151413    RESTORE_STATE_VM32
    14161414    mov     eax, VINF_SUCCESS
     
    16901688    ; Resume or start VM?
    16911689    cmp     xDI, 0                  ; fResume
    1692     je      .vmlaunch64_launch
    16931690
    16941691    ; Load guest rdi & rsi.
     
    16961693    mov     rsi, qword [xSI + CPUMCTX.esi]
    16971694
     1695    je      .vmlaunch64_launch
     1696
    16981697    vmresume
     1698    jc      near .vmxstart64_invalid_vmcs_ptr
     1699    jz      near .vmxstart64_start_failed
    16991700    jmp     .vmlaunch64_done;      ; Here if vmresume detected a failure.
    17001701
    17011702.vmlaunch64_launch:
    1702     ; Save guest rdi & rsi.
    1703     mov     rdi, qword [xSI + CPUMCTX.edi]
    1704     mov     rsi, qword [xSI + CPUMCTX.esi]
    1705 
    17061703    vmlaunch
     1704    jc      near .vmxstart64_invalid_vmcs_ptr
     1705    jz      near .vmxstart64_start_failed
    17071706    jmp     .vmlaunch64_done;      ; Here if vmlaunch detected a failure.
    17081707
    17091708ALIGNCODE(16)
    17101709.vmlaunch64_done:
    1711     jc      near .vmxstart64_invalid_vmcs_ptr
    1712     jz      near .vmxstart64_start_failed
    1713 
    17141710    RESTORE_STATE_VM64
    17151711    mov     eax, VINF_SUCCESS
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