VirtualBox

Ignore:
Timestamp:
Feb 29, 2024 2:07:04 PM (11 months ago)
Author:
vboxsync
Message:

VMM/IEM: Fixed liveness state layout after r161946 broke it. Added compile time assert to help detecting this. bugref:10372 bugref:10371

File:
1 edited

Legend:

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

    r103613 r103614  
    176176        } while (0)
    177177#endif
     178
     179
     180#define IEM_LIVENESS_CR0_INPUT()                    IEM_LIVENESS_BITMAP_MEMBER_INPUT(  fCr0, 0)
     181#define IEM_LIVENESS_CR4_INPUT()                    IEM_LIVENESS_BITMAP_MEMBER_INPUT(  fCr4, 0)
     182
     183
     184#define IEM_LIVENESS_FCW_INPUT()                    IEM_LIVENESS_BITMAP_MEMBER_INPUT(  fFcw, 0)
     185#define IEM_LIVENESS_FCW_CLOBBER()                  IEM_LIVENESS_BITMAP_MEMBER_CLOBBER(fFcw, 0)
     186#define IEM_LIVENESS_FCW_MODIFY()                   IEM_LIVENESS_BITMAP_MEMBER_MODIFY( fFcw, 0)
     187
     188
     189#define IEM_LIVENESS_FSW_INPUT()                    IEM_LIVENESS_BITMAP_MEMBER_INPUT(  fFsw, 0)
     190#define IEM_LIVENESS_FSW_CLOBBER()                  IEM_LIVENESS_BITMAP_MEMBER_CLOBBER(fFsw, 0)
     191#define IEM_LIVENESS_FSW_MODIFY()                   IEM_LIVENESS_BITMAP_MEMBER_MODIFY( fFsw, 0)
    178192
    179193
     
    430444#define IEM_MC_NO_NATIVE_RECOMPILE()                                NOP()
    431445
    432 #define IEM_MC_RAISE_DIVIDE_ERROR()                                 NOP()
    433 #define IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE()                   IEM_LIVENESS_MARK_XCPT_OR_CALL()
    434 #define IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE()              IEM_LIVENESS_MARK_XCPT_OR_CALL()
    435 #define IEM_MC_MAYBE_RAISE_FPU_XCPT()                               IEM_LIVENESS_MARK_XCPT_OR_CALL()
    436 #define IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT()                       IEM_LIVENESS_MARK_XCPT_OR_CALL()
    437 #define IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT()                       IEM_LIVENESS_MARK_XCPT_OR_CALL()
    438 #define IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT()                       IEM_LIVENESS_MARK_XCPT_OR_CALL()
     446#define IEM_MC_RAISE_DIVIDE_ERROR()                                 IEM_LIVENESS_MARK_XCPT_OR_CALL()
     447#define IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE()                   IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR0_INPUT()
     448#define IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE() \            IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR0_INPUT()
     449#define IEM_MC_MAYBE_RAISE_FPU_XCPT()                               IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_FSW_INPUT()
     450#define IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT() \
     451    IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR0_INPUT(); IEM_LIVENESS_CR4_INPUT() //; IEM_LIVENESS_XCR0_INPUT()
     452#define IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT() \
     453    IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR0_INPUT(); IEM_LIVENESS_CR4_INPUT()
     454#define IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT() \
     455    IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR0_INPUT(); IEM_LIVENESS_FSW_INPUT()
    439456#define IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO()                          IEM_LIVENESS_MARK_XCPT_OR_CALL()
    440457#define IEM_MC_RAISE_GP0_IF_EFF_ADDR_UNALIGNED(a_EffAddr, a_cbAlign) IEM_LIVENESS_MARK_XCPT_OR_CALL()
    441 #define IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT()                          IEM_LIVENESS_MARK_XCPT_OR_CALL()
     458#define IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT()                          IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR4_INPUT()
    442459#define IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(a_u64Addr)        IEM_LIVENESS_MARK_XCPT_OR_CALL()
    443 #define IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT()             IEM_LIVENESS_MARK_XCPT_OR_CALL()
    444 #define IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT()                   IEM_LIVENESS_MARK_XCPT_OR_CALL()
     460#define IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT()             IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR4_INPUT() /** @todo revisit when implemented. */
     461#define IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT()                   IEM_LIVENESS_MARK_XCPT_OR_CALL(); IEM_LIVENESS_CR4_INPUT()
    445462
    446463#define IEM_MC_LOCAL(a_Type, a_Name)                                NOP()
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