VirtualBox

Ignore:
Timestamp:
Jun 7, 2023 3:14:56 PM (18 months ago)
Author:
vboxsync
Message:

VMM/IEM: Adjusted/reworked the relative jump MCs in the threaded function file. bugref:10369

File:
1 edited

Legend:

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

    r100089 r100096  
    9595
    9696
    97 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length as param. */
    98 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED(a_i8, a_cbInstr, a_enmEffOpSize) \
    99     return iemRegRipRelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
     97/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length as extra
     98 *  parameter, for use in 16-bit code on a pre-386 CPU. */
     99#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16(a_i8, a_cbInstr) \
     100    return iemRegIp16RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8))
     101
     102/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand
     103 * size as extra parameters, for use in 16-bit and 32-bit code on 386 and
     104 * later CPUs. */
     105#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32(a_i8, a_cbInstr, a_enmEffOpSize) \
     106    return iemRegEip32RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
     107
     108/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand
     109 * size as extra parameters, for use in 64-bit code. */
     110#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64(a_i8, a_cbInstr, a_enmEffOpSize) \
     111    return iemRegRip64RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
     112
    100113#undef  IEM_MC_REL_JMP_S8_AND_FINISH
    101114
    102 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as param. */
    103 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED(a_i16, a_cbInstr) \
    104     return iemRegRipRelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     115
     116/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
     117 *  param, for use in 16-bit code on a pre-386 CPU. */
     118#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16(a_i16, a_cbInstr) \
     119    return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     120
     121/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
     122 *  param, for use in 16-bit and 32-bit code on 386 and later CPUs. */
     123#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32(a_i16, a_cbInstr) \
     124    return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     125
     126/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
     127 *  param, for use in 64-bit code. */
     128#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64(a_i16, a_cbInstr) \
     129    return iemRegRip64RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     130
    105131#undef  IEM_MC_REL_JMP_S16_AND_FINISH
    106132
    107 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as param. */
    108 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED(a_i32, a_cbInstr, a_enmEffOpSize) \
    109     return iemRegRipRelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32), a_enmEffOpSize)
     133
     134/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
     135 *  an extra parameter - dummy for pre-386 variations not eliminated by the
     136 *  python script. */
     137#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16(a_i32, a_cbInstr) \
     138    do { RT_NOREF(pVCpu, a_i32, a_cbInstr); AssertFailedReturn(VERR_IEM_IPE_9); } while (0)
     139
     140/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
     141 *  an extra parameter, for use in 16-bit and 32-bit code on 386+. */
     142#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32(a_i32, a_cbInstr) \
     143    return iemRegEip32RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32))
     144
     145/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
     146 *  an extra parameter, for use in 64-bit code. */
     147#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64(a_i32, a_cbInstr) \
     148    return iemRegRip64RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32))
     149
    110150#undef  IEM_MC_REL_JMP_S32_AND_FINISH
    111151
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