VirtualBox

Changeset 105462 in vbox for trunk


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

VMM/IEM: Simplify the MXCSR exception calculation a tiny bit, bugref:10652

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r105450 r105462  
    1559815598     * are set and are unmasked in MXCSR.
    1559915599     */
     15600    uint32_t const fMxcsrExcpMask = ~((fMxcsr & X86_MXCSR_XCPT_MASK) >> X86_MXCSR_XCPT_MASK_SHIFT);
    1560015601    if (  ((fMxcsr | fXcpt) & (X86_MXCSR_IE | X86_MXCSR_DE | X86_MXCSR_ZE))
    15601         & ~((fMxcsr & X86_MXCSR_XCPT_MASK) >> X86_MXCSR_XCPT_MASK_SHIFT))
     15602        & fMxcsrExcpMask)
    1560215603        return fMxcsr | (fXcpt & (X86_MXCSR_IE | X86_MXCSR_DE | X86_MXCSR_ZE));
    1560315604
     
    1561215613
    1561315614    /* If OE/UE get raised PE won't be set because of the lower priority. */
    15614     if (   (   ((fXcpt & (X86_MXCSR_PE | X86_MXCSR_OE)) == (X86_MXCSR_PE | X86_MXCSR_OE))
    15615             && !(fMxcsr & X86_MXCSR_OM))
    15616         || (   ((fXcpt & (X86_MXCSR_PE | X86_MXCSR_UE)) == (X86_MXCSR_PE | X86_MXCSR_UE))
    15617             && !(fMxcsr & X86_MXCSR_UM)))
     15615    if (  (fXcpt & (X86_MXCSR_UE | X86_MXCSR_OE))
     15616        & fMxcsrExcpMask)
    1561815617        fXcpt &= ~X86_MXCSR_PE;
    1561915618
     
    1567315672     * are set and are unmasked in MXCSR.
    1567415673     */
     15674    uint32_t const fMxcsrExcpMask = ~((fMxcsr & X86_MXCSR_XCPT_MASK) >> X86_MXCSR_XCPT_MASK_SHIFT);
    1567515675    if (  ((fMxcsr | fXcpt) & (X86_MXCSR_IE | X86_MXCSR_DE | X86_MXCSR_ZE))
    15676         & ~((fMxcsr & X86_MXCSR_XCPT_MASK) >> X86_MXCSR_XCPT_MASK_SHIFT))
     15676        & fMxcsrExcpMask)
    1567715677        return fMxcsr | (fXcpt & (X86_MXCSR_IE | X86_MXCSR_DE | X86_MXCSR_ZE));
    1567815678
     
    1568815688
    1568915689    /* If OE/UE get raised PE won't be set because of the lower priority. */
    15690     if (   (   ((fXcpt & (X86_MXCSR_PE | X86_MXCSR_OE)) == (X86_MXCSR_PE | X86_MXCSR_OE))
    15691             && !(fMxcsr & X86_MXCSR_OM))
    15692         || (   ((fXcpt & (X86_MXCSR_PE | X86_MXCSR_UE)) == (X86_MXCSR_PE | X86_MXCSR_UE))
    15693             && !(fMxcsr & X86_MXCSR_UM)))
     15690    if (  (fXcpt & (X86_MXCSR_UE | X86_MXCSR_OE))
     15691        & fMxcsrExcpMask)
    1569415692        fXcpt &= ~X86_MXCSR_PE;
    1569515693
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