- 時間撮記:
- 2024-1-15 下午02:26:27 (13 月 以前)
- svn:sync-xref-src-repo-rev:
- 161096
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMAll/IEMAllThrdFuncs.cpp
r102586 r102876 79 79 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 80 80 * and only used when we're in 16-bit code on a pre-386 CPU. */ 81 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16(a_cbInstr ) \82 return iemRegAddToIp16AndFinishingNoFlags(pVCpu, a_cbInstr )81 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16(a_cbInstr, a_rcNormal) \ 82 return iemRegAddToIp16AndFinishingNoFlags(pVCpu, a_cbInstr, a_rcNormal) 83 83 84 84 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 85 85 * and used for 16-bit and 32-bit code on 386 and later CPUs. */ 86 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32(a_cbInstr ) \87 return iemRegAddToEip32AndFinishingNoFlags(pVCpu, a_cbInstr )86 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32(a_cbInstr, a_rcNormal) \ 87 return iemRegAddToEip32AndFinishingNoFlags(pVCpu, a_cbInstr, a_rcNormal) 88 88 89 89 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 90 90 * and only used when we're in 64-bit code. */ 91 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64(a_cbInstr ) \92 return iemRegAddToRip64AndFinishingNoFlags(pVCpu, a_cbInstr )91 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64(a_cbInstr, a_rcNormal) \ 92 return iemRegAddToRip64AndFinishingNoFlags(pVCpu, a_cbInstr, a_rcNormal) 93 93 94 94 … … 96 96 * and only used when we're in 16-bit code on a pre-386 CPU and we need to 97 97 * check and clear flags. */ 98 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_cbInstr ) \99 return iemRegAddToIp16AndFinishingClearingRF(pVCpu, a_cbInstr )98 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_cbInstr, a_rcNormal) \ 99 return iemRegAddToIp16AndFinishingClearingRF(pVCpu, a_cbInstr, a_rcNormal) 100 100 101 101 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 102 102 * and used for 16-bit and 32-bit code on 386 and later CPUs and we need to 103 103 * check and clear flags. */ 104 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_cbInstr ) \105 return iemRegAddToEip32AndFinishingClearingRF(pVCpu, a_cbInstr )104 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_cbInstr, a_rcNormal) \ 105 return iemRegAddToEip32AndFinishingClearingRF(pVCpu, a_cbInstr, a_rcNormal) 106 106 107 107 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 108 108 * and only used when we're in 64-bit code and we need to check and clear 109 109 * flags. */ 110 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_cbInstr ) \111 return iemRegAddToRip64AndFinishingClearingRF(pVCpu, a_cbInstr )110 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_cbInstr, a_rcNormal) \ 111 return iemRegAddToRip64AndFinishingClearingRF(pVCpu, a_cbInstr, a_rcNormal) 112 112 113 113 #undef IEM_MC_ADVANCE_RIP_AND_FINISH … … 116 116 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length as extra 117 117 * parameter, for use in 16-bit code on a pre-386 CPU. */ 118 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16(a_i8, a_cbInstr ) \119 return iemRegIp16RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8) )118 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16(a_i8, a_cbInstr, a_rcNormal) \ 119 return iemRegIp16RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_rcNormal) 120 120 121 121 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 122 122 * size as extra parameters, for use in 16-bit and 32-bit code on 386 and 123 123 * later CPUs. */ 124 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32(a_i8, a_cbInstr, a_enmEffOpSize ) \125 return iemRegEip32RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize )124 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32(a_i8, a_cbInstr, a_enmEffOpSize, a_rcNormal) \ 125 return iemRegEip32RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize, a_rcNormal) 126 126 127 127 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 128 128 * size as extra parameters, for use in 64-bit code. */ 129 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64(a_i8, a_cbInstr, a_enmEffOpSize ) \130 return iemRegRip64RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize )129 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64(a_i8, a_cbInstr, a_enmEffOpSize, a_rcNormal) \ 130 return iemRegRip64RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize, a_rcNormal) 131 131 132 132 … … 134 134 * parameter, for use in 16-bit code on a pre-386 CPU and we need to check and 135 135 * clear flags. */ 136 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i8, a_cbInstr ) \137 return iemRegIp16RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8) )136 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i8, a_cbInstr, a_rcNormal) \ 137 return iemRegIp16RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_rcNormal) 138 138 139 139 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 140 140 * size as extra parameters, for use in 16-bit and 32-bit code on 386 and 141 141 * later CPUs and we need to check and clear flags. */ 142 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize ) \143 return iemRegEip32RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize )142 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize, a_rcNormal) \ 143 return iemRegEip32RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize, a_rcNormal) 144 144 145 145 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 146 146 * size as extra parameters, for use in 64-bit code and we need to check and 147 147 * clear flags. */ 148 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize ) \149 return iemRegRip64RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize )148 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize, a_rcNormal) \ 149 return iemRegRip64RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize, a_rcNormal) 150 150 151 151 #undef IEM_MC_REL_JMP_S8_AND_FINISH … … 154 154 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 155 155 * param, for use in 16-bit code on a pre-386 CPU. */ 156 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16(a_i16, a_cbInstr ) \157 return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16) )156 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16(a_i16, a_cbInstr, a_rcNormal) \ 157 return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16), a_rcNormal) 158 158 159 159 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 160 160 * param, for use in 16-bit and 32-bit code on 386 and later CPUs. */ 161 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32(a_i16, a_cbInstr ) \162 return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16) )161 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32(a_i16, a_cbInstr, a_rcNormal) \ 162 return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16), a_rcNormal) 163 163 164 164 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 165 165 * param, for use in 64-bit code. */ 166 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64(a_i16, a_cbInstr ) \167 return iemRegRip64RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16) )166 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64(a_i16, a_cbInstr, a_rcNormal) \ 167 return iemRegRip64RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16), a_rcNormal) 168 168 169 169 … … 171 171 * param, for use in 16-bit code on a pre-386 CPU and we need to check and 172 172 * clear flags. */ 173 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i16, a_cbInstr ) \174 return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16) )173 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i16, a_cbInstr, a_rcNormal) \ 174 return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16), a_rcNormal) 175 175 176 176 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 177 177 * param, for use in 16-bit and 32-bit code on 386 and later CPUs and we need 178 178 * to check and clear flags. */ 179 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i16, a_cbInstr ) \180 return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16) )179 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i16, a_cbInstr, a_rcNormal) \ 180 return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16), a_rcNormal) 181 181 182 182 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 183 183 * param, for use in 64-bit code and we need to check and clear flags. */ 184 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i16, a_cbInstr ) \185 return iemRegRip64RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16) )184 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i16, a_cbInstr, a_rcNormal) \ 185 return iemRegRip64RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16), a_rcNormal) 186 186 187 187 #undef IEM_MC_REL_JMP_S16_AND_FINISH … … 191 191 * an extra parameter - dummy for pre-386 variations not eliminated by the 192 192 * python script. */ 193 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16(a_i32, a_cbInstr ) \194 do { RT_NOREF(pVCpu, a_i32, a_cbInstr ); AssertFailedReturn(VERR_IEM_IPE_9); } while (0)193 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16(a_i32, a_cbInstr, a_rcNormal) \ 194 do { RT_NOREF(pVCpu, a_i32, a_cbInstr, a_rcNormal); AssertFailedReturn(VERR_IEM_IPE_9); } while (0) 195 195 196 196 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 197 197 * an extra parameter, for use in 16-bit and 32-bit code on 386+. */ 198 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32(a_i32, a_cbInstr ) \199 return iemRegEip32RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32) )198 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32(a_i32, a_cbInstr, a_rcNormal) \ 199 return iemRegEip32RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32), a_rcNormal) 200 200 201 201 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 202 202 * an extra parameter, for use in 64-bit code. */ 203 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64(a_i32, a_cbInstr ) \204 return iemRegRip64RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32) )203 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64(a_i32, a_cbInstr, a_rcNormal) \ 204 return iemRegRip64RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32), a_rcNormal) 205 205 206 206 … … 208 208 * an extra parameter - dummy for pre-386 variations not eliminated by the 209 209 * python script. */ 210 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i32, a_cbInstr ) \211 do { RT_NOREF(pVCpu, a_i32, a_cbInstr ); AssertFailedReturn(VERR_IEM_IPE_9); } while (0)210 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i32, a_cbInstr, a_rcNormal) \ 211 do { RT_NOREF(pVCpu, a_i32, a_cbInstr, a_rcNormal); AssertFailedReturn(VERR_IEM_IPE_9); } while (0) 212 212 213 213 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 214 214 * an extra parameter, for use in 16-bit and 32-bit code on 386+ and we need 215 215 * to check and clear flags. */ 216 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i32, a_cbInstr ) \217 return iemRegEip32RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32) )216 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i32, a_cbInstr, a_rcNormal) \ 217 return iemRegEip32RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32), a_rcNormal) 218 218 219 219 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 220 220 * an extra parameter, for use in 64-bit code and we need to check and clear 221 221 * flags. */ 222 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i32, a_cbInstr ) \223 return iemRegRip64RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32) )222 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i32, a_cbInstr, a_rcNormal) \ 223 return iemRegRip64RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32), a_rcNormal) 224 224 225 225 #undef IEM_MC_REL_JMP_S32_AND_FINISH
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器