VirtualBox

Changeset 105456 in vbox


Ignore:
Timestamp:
Jul 24, 2024 8:02:04 AM (6 months ago)
Author:
vboxsync
Message:

VMM/IEM: Need to clear PE if either OE/UE is set and not masked by the guest's MXCSR, bugref:10652

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r105355 r105456  
    53695369        ; Merge the status bits into the original MXCSR value.
    53705370        and     %1, X86_MXCSR_XCPT_FLAGS
     5371        ;
     5372        ; If PE is set together with OE/UE and neither are masked
     5373        ; PE needs to be cleared because on real hardware
     5374        ; an exception is generated with only OE/UE being set,
     5375        ; but because we mask all exceptions PE will get set as well.
     5376        ;
     5377        mov     T2_32, %1
     5378        and     T2_32, X86_MXCSR_OE | X86_MXCSR_UE
     5379        mov     T1_32, %2
     5380        and     T1_32, X86_MXCSR_OM | X86_MXCSR_UM
     5381        shr     T1_32, X86_MXCSR_XCPT_MASK_SHIFT
     5382        not     T1_32
     5383        and     T2_32, T1_32
     5384        bt      T2_32, X86_MXCSR_UE
     5385        jz      .excp_masked
     5386        btr     %1, X86_MXCSR_PE_BIT
     5387.excp_masked:
    53715388        or      %1, %2
    53725389
Note: See TracChangeset for help on using the changeset viewer.

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