Changeset 104016 in vbox
- Timestamp:
- Mar 23, 2024 10:46:33 PM (10 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstCommonBodyMacros.h
r103828 r104016 50 50 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 51 51 IEM_MC_STORE_GREG_U16_CONST(IEM_GET_MODRM_RM(pVCpu, a_bRm), 0); \ 52 IEM_MC_LOCAL(uint32_t, fEFlags); \ 53 IEM_MC_FETCH_EFLAGS(fEFlags); \ 52 IEM_MC_LOCAL_EFLAGS(fEFlags); \ 54 53 IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \ 55 54 IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \ … … 63 62 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 64 63 IEM_MC_STORE_GREG_U32_CONST(IEM_GET_MODRM_RM(pVCpu, a_bRm), 0); \ 65 IEM_MC_LOCAL(uint32_t, fEFlags); \ 66 IEM_MC_FETCH_EFLAGS(fEFlags); \ 64 IEM_MC_LOCAL_EFLAGS(fEFlags); \ 67 65 IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \ 68 66 IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \ … … 76 74 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 77 75 IEM_MC_STORE_GREG_U64_CONST(IEM_GET_MODRM_RM(pVCpu, a_bRm), 0); \ 78 IEM_MC_LOCAL(uint32_t, fEFlags); \ 79 IEM_MC_FETCH_EFLAGS(fEFlags); \ 76 IEM_MC_LOCAL_EFLAGS(fEFlags); \ 80 77 IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \ 81 78 IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \ … … 111 108 IEM_MC_LOCAL(uint16_t, u16Dst); \ 112 109 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 113 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 114 IEM_MC_LOCAL(uint32_t, uEFlags); \ 115 IEM_MC_FETCH_EFLAGS(uEFlags); \ 110 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 116 111 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 117 112 IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_REG(pVCpu, bRm), u16Dst); \ … … 136 131 IEM_MC_LOCAL(uint32_t, u32Dst); \ 137 132 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 138 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 139 IEM_MC_LOCAL(uint32_t, uEFlags); \ 140 IEM_MC_FETCH_EFLAGS(uEFlags); \ 133 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 141 134 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 142 135 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), u32Dst); \ … … 162 155 IEM_MC_LOCAL(uint64_t, u64Dst); \ 163 156 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 164 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 165 IEM_MC_LOCAL(uint32_t, uEFlags); \ 166 IEM_MC_FETCH_EFLAGS(uEFlags); \ 157 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 167 158 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 168 159 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Dst); \ … … 199 190 IEM_MC_LOCAL(uint16_t, u16Dst); \ 200 191 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 201 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 202 IEM_MC_LOCAL(uint32_t, uEFlags); \ 203 IEM_MC_FETCH_EFLAGS(uEFlags); \ 192 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 204 193 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 205 194 IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_REG(pVCpu, bRm), u16Dst); \ … … 226 215 IEM_MC_LOCAL(uint32_t, u32Dst); \ 227 216 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 228 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 229 IEM_MC_LOCAL(uint32_t, uEFlags); \ 230 IEM_MC_FETCH_EFLAGS(uEFlags); \ 217 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 231 218 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 232 219 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), u32Dst); \ … … 254 241 IEM_MC_LOCAL(uint64_t, u64Dst); \ 255 242 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 256 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 257 IEM_MC_LOCAL(uint32_t, uEFlags); \ 258 IEM_MC_FETCH_EFLAGS(uEFlags); \ 243 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 259 244 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 260 245 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Dst); \ … … 298 283 IEM_MC_LOCAL(uint16_t, u16Dst); \ 299 284 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 300 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 301 IEM_MC_LOCAL(uint32_t, uEFlags); \ 302 IEM_MC_FETCH_EFLAGS(uEFlags); \ 285 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 303 286 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 304 287 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 322 305 IEM_MC_LOCAL(uint32_t, u32Dst); \ 323 306 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 324 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 325 IEM_MC_LOCAL(uint32_t, uEFlags); \ 326 IEM_MC_FETCH_EFLAGS(uEFlags); \ 307 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 327 308 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 328 309 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 346 327 IEM_MC_LOCAL(uint64_t, u64Dst); \ 347 328 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 348 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 349 IEM_MC_LOCAL(uint32_t, uEFlags); \ 350 IEM_MC_FETCH_EFLAGS(uEFlags); \ 329 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 351 330 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 352 331 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 382 361 IEM_MC_LOCAL(uint16_t, u16Dst); \ 383 362 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 384 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 385 IEM_MC_LOCAL(uint32_t, uEFlags); \ 386 IEM_MC_FETCH_EFLAGS(uEFlags); \ 363 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 387 364 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 388 365 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 408 385 IEM_MC_LOCAL(uint32_t, u32Dst); \ 409 386 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 410 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 411 IEM_MC_LOCAL(uint32_t, uEFlags); \ 412 IEM_MC_FETCH_EFLAGS(uEFlags); \ 387 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 413 388 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 414 389 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 434 409 IEM_MC_LOCAL(uint64_t, u64Dst); \ 435 410 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 436 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 437 IEM_MC_LOCAL(uint32_t, uEFlags); \ 438 IEM_MC_FETCH_EFLAGS(uEFlags); \ 411 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 439 412 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 440 413 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r103828 r104016 71 71 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 72 72 IEM_MC_STORE_GREG_U8_CONST(IEM_GET_MODRM_REG(pVCpu, a_bRm), 0); \ 73 IEM_MC_LOCAL(uint32_t, fEFlags); \ 74 IEM_MC_FETCH_EFLAGS(fEFlags); \ 73 IEM_MC_LOCAL_EFLAGS(fEFlags); \ 75 74 IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \ 76 75 IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \ … … 97 96 IEM_MC_LOCAL(uint8_t, u8Dst); \ 98 97 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 99 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 100 IEM_MC_LOCAL(uint32_t, uEFlags); \ 101 IEM_MC_FETCH_EFLAGS(uEFlags); \ 98 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 102 99 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \ 103 100 IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, a_bRm), u8Dst); \ … … 182 179 IEM_MC_LOCAL(uint8_t, u8Dst); \ 183 180 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 184 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 185 IEM_MC_LOCAL(uint32_t, uEFlags); \ 186 IEM_MC_FETCH_EFLAGS(uEFlags); \ 181 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 187 182 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \ 188 183 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 215 210 IEM_MC_LOCAL(uint8_t, u8SrcEmit); \ 216 211 IEM_MC_FETCH_GREG_U8(u8SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 217 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 218 IEM_MC_LOCAL(uint32_t, uEFlags); \ 219 IEM_MC_FETCH_EFLAGS(uEFlags); \ 212 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 220 213 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u8Dst, u8SrcEmit, uEFlags, 8); \ 221 214 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 261 254 IEM_MC_LOCAL(uint8_t, u8Dst); \ 262 255 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 263 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 264 IEM_MC_LOCAL(uint32_t, uEFlags); \ 265 IEM_MC_FETCH_EFLAGS(uEFlags); \ 256 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 266 257 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \ 267 258 IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_REG(pVCpu, a_bRm), u8Dst); \ … … 291 282 IEM_MC_LOCAL(uint8_t, u8Dst); \ 292 283 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 293 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 294 IEM_MC_LOCAL(uint32_t, uEFlags); \ 295 IEM_MC_FETCH_EFLAGS(uEFlags); \ 284 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 296 285 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \ 297 286 IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_REG(pVCpu, a_bRm), u8Dst); \ … … 325 314 IEM_MC_LOCAL(uint8_t, u8Dst); \ 326 315 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 327 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 328 IEM_MC_LOCAL(uint32_t, uEFlags); \ 329 IEM_MC_FETCH_EFLAGS(uEFlags); \ 316 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 330 317 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \ 331 318 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 354 341 IEM_MC_LOCAL(uint8_t, u8Dst); \ 355 342 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 356 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 357 IEM_MC_LOCAL(uint32_t, uEFlags); \ 358 IEM_MC_FETCH_EFLAGS(uEFlags); \ 343 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 359 344 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \ 360 345 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 392 377 IEM_MC_LOCAL(uint16_t, u16Dst); \ 393 378 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 394 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 395 IEM_MC_LOCAL(uint32_t, uEFlags); \ 396 IEM_MC_FETCH_EFLAGS(uEFlags); \ 379 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 397 380 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 398 381 IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, a_bRm), u16Dst); \ … … 417 400 IEM_MC_LOCAL(uint32_t, u32Dst); \ 418 401 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 419 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 420 IEM_MC_LOCAL(uint32_t, uEFlags); \ 421 IEM_MC_FETCH_EFLAGS(uEFlags); \ 402 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 422 403 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 423 404 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, a_bRm), u32Dst); \ … … 443 424 IEM_MC_LOCAL(uint64_t, u64Dst); \ 444 425 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 445 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 446 IEM_MC_LOCAL(uint32_t, uEFlags); \ 447 IEM_MC_FETCH_EFLAGS(uEFlags); \ 426 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 448 427 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 449 428 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, a_bRm), u64Dst); \ … … 636 615 IEM_MC_LOCAL(uint16_t, u16Dst); \ 637 616 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 638 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 639 IEM_MC_LOCAL(uint32_t, uEFlags); \ 640 IEM_MC_FETCH_EFLAGS(uEFlags); \ 617 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 641 618 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 642 619 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 660 637 IEM_MC_LOCAL(uint32_t, u32Dst); \ 661 638 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 662 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 663 IEM_MC_LOCAL(uint32_t, uEFlags); \ 664 IEM_MC_FETCH_EFLAGS(uEFlags); \ 639 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 665 640 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 666 641 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 684 659 IEM_MC_LOCAL(uint64_t, u64Dst); \ 685 660 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \ 686 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 687 IEM_MC_LOCAL(uint32_t, uEFlags); \ 688 IEM_MC_FETCH_EFLAGS(uEFlags); \ 661 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 689 662 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 690 663 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 724 697 IEM_MC_LOCAL(uint16_t, u16SrcEmit); \ 725 698 IEM_MC_FETCH_GREG_U16(u16SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 726 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 727 IEM_MC_LOCAL(uint32_t, uEFlags); \ 728 IEM_MC_FETCH_EFLAGS(uEFlags); \ 699 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 729 700 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16SrcEmit, uEFlags, 16); \ 730 701 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 755 726 IEM_MC_LOCAL(uint32_t, u32SrcEmit); \ 756 727 IEM_MC_FETCH_GREG_U32(u32SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 757 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 758 IEM_MC_LOCAL(uint32_t, uEFlags); \ 759 IEM_MC_FETCH_EFLAGS(uEFlags); \ 728 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 760 729 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32SrcEmit, uEFlags, 32); \ 761 730 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 786 755 IEM_MC_LOCAL(uint64_t, u64SrcEmit); \ 787 756 IEM_MC_FETCH_GREG_U64(u64SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 788 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \ 789 IEM_MC_LOCAL(uint32_t, uEFlags); \ 790 IEM_MC_FETCH_EFLAGS(uEFlags); \ 757 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 791 758 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64SrcEmit, uEFlags, 64); \ 792 759 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 5646 5613 IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, bRm)); 5647 5614 IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) { 5648 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ 5649 IEM_MC_LOCAL(uint32_t, uEFlags); 5650 IEM_MC_FETCH_EFLAGS(uEFlags); 5615 IEM_MC_LOCAL_EFLAGS(uEFlags); 5651 5616 IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u8Src, u8Src, uEFlags, 8); 5652 5617 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); … … 5692 5657 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); 5693 5658 IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) { 5694 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ 5695 IEM_MC_LOCAL(uint32_t, uEFlags); 5696 IEM_MC_FETCH_EFLAGS(uEFlags); 5659 IEM_MC_LOCAL_EFLAGS(uEFlags); 5697 5660 IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u16Src, u16Src, uEFlags, 16); 5698 5661 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); … … 5714 5677 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); 5715 5678 IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) { 5716 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ 5717 IEM_MC_LOCAL(uint32_t, uEFlags); 5718 IEM_MC_FETCH_EFLAGS(uEFlags); 5679 IEM_MC_LOCAL_EFLAGS(uEFlags); 5719 5680 IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u32Src, u32Src, uEFlags, 32); 5720 5681 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); … … 5736 5697 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); 5737 5698 IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) { 5738 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ 5739 IEM_MC_LOCAL(uint32_t, uEFlags); 5740 IEM_MC_FETCH_EFLAGS(uEFlags); 5699 IEM_MC_LOCAL_EFLAGS(uEFlags); 5741 5700 IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u64Src, u64Src, uEFlags, 64); 5742 5701 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); … … 10068 10027 /* Need to use a body macro here since the EFLAGS behaviour differs between 10069 10028 the shifts, rotates and rotate w/ carry. Sigh. */ 10070 #define GRP2_BODY_Ev_CL(a_ pImplExpr) \10029 #define GRP2_BODY_Ev_CL(a_Ins, a_pImplExpr, a_fRegNativeArchs, a_fMemNativeArchs) \ 10071 10030 PCIEMOPSHIFTSIZES const pImpl = (a_pImplExpr); \ 10072 10031 if (IEM_IS_MODRM_REG_MODE(bRm)) \ … … 10078 10037 IEM_MC_BEGIN(3, 0, 0, 0); \ 10079 10038 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10080 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \10081 10039 IEM_MC_ARG(uint8_t, cShiftArg, 1); \ 10082 IEM_MC_ARG(uint32_t *, pEFlags, 2); \10083 10040 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 10084 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10085 IEM_MC_REF_EFLAGS(pEFlags); \ 10086 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \ 10041 /*IEM_MC_NATIVE_IF(a_fRegNativeArchs) { \ 10042 IEM_MC_LOCAL(uint16_t, u16Dst); \ 10043 IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10044 } IEM_MC_NATIVE_ELSE() { */ \ 10045 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10046 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10047 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10048 IEM_MC_REF_EFLAGS(pEFlags); \ 10049 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \ 10050 /*}*/ \ 10087 10051 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10088 10052 IEM_MC_END(); \ … … 10202 10166 { 10203 10167 IEMOP_MNEMONIC2EX(rol_Ev_CL, "rol Ev,CL", M_CL, ROL, rol, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10204 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));10168 GRP2_BODY_Ev_CL(rol, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags), 0, 0); 10205 10169 } 10206 10170 … … 10214 10178 { 10215 10179 IEMOP_MNEMONIC2EX(ror_Ev_CL, "ror Ev,CL", M_CL, ROR, ror, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10216 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));10180 GRP2_BODY_Ev_CL(ror, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags), 0, 0); 10217 10181 } 10218 10182 … … 10226 10190 { 10227 10191 IEMOP_MNEMONIC2EX(rcl_Ev_CL, "rcl Ev,CL", M_CL, RCL, rcl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10228 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));10192 GRP2_BODY_Ev_CL(rcl, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags), 0, 0); 10229 10193 } 10230 10194 … … 10238 10202 { 10239 10203 IEMOP_MNEMONIC2EX(rcr_Ev_CL, "rcr Ev,CL", M_CL, RCR, rcr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10240 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));10204 GRP2_BODY_Ev_CL(rcr, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags), 0, 0); 10241 10205 } 10242 10206 … … 10250 10214 { 10251 10215 IEMOP_MNEMONIC2EX(shl_Ev_CL, "shl Ev,CL", M_CL, SHL, shl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10252 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));10216 GRP2_BODY_Ev_CL(shl, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags), 0, 0); 10253 10217 } 10254 10218 … … 10262 10226 { 10263 10227 IEMOP_MNEMONIC2EX(shr_Ev_CL, "shr Ev,CL", M_CL, SHR, shr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10264 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));10228 GRP2_BODY_Ev_CL(shr, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags), 0, 0); 10265 10229 } 10266 10230 … … 10274 10238 { 10275 10239 IEMOP_MNEMONIC2EX(sar_Ev_CL, "sar Ev,CL", M_CL, SAR, sar, Ev, REG_CL, DISOPTYPE_HARMLESS, 0); 10276 GRP2_BODY_Ev_CL( IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));10240 GRP2_BODY_Ev_CL(sar, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags), 0, 0); 10277 10241 } 10278 10242 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r103995 r104016 2319 2319 """ IEM_MC_LOCAL_EFLAGS""" 2320 2320 oSelf.checkStmtParamCount(sName, asParams, 1); 2321 oStmt = McStmtVar(sName, asParams, 'uint32_t', asParams[0]); 2322 oSelf.aoLocals.append(oStmt); 2323 return oStmt; 2321 # Note! We split this one up into IEM_MC_LOCAL_VAR and IEM_MC_FETCH_EFLAGS just like with IEM_MC_ARG_LOCAL_EFLAGS. 2322 oStmtLocal = McStmtVar('IEM_MC_LOCAL', ['uint32_t', asParams[0]], 'uint32_t', asParams[0]); 2323 oSelf.aoLocals.append(oStmtLocal); 2324 oStmtFetch = McStmt('IEM_MC_FETCH_EFLAGS', [asParams[0]]); 2325 return (oStmtLocal, oStmtFetch,); 2324 2326 2325 2327 @staticmethod -
trunk/src/VBox/VMM/include/IEMMc.h
r103984 r104016 207 207 uint32_t a_Name; \ 208 208 uint32_t *a_pName = &a_Name 209 /** @note IEMAllInstPython.py duplicates the expansion. */ 209 210 #define IEM_MC_LOCAL_EFLAGS(a_Name) uint32_t a_Name = pVCpu->cpum.GstCtx.eflags.u 210 211 #define IEM_MC_COMMIT_EFLAGS(a_EFlags) \ -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r103922 r104016 632 632 a_Type a_Name = (a_Value); \ 633 633 NOREF(a_Name) 634 #define IEM_MC_LOCAL_EFLAGS(a_Name) IEM_MC_LOCAL(uint32_t, a_Name); IEM_MC_FETCH_EFLAGS(a_Name) 634 635 #define IEM_MC_NOREF(a_Name) RT_NOREF_PV(a_Name) 635 636
Note:
See TracChangeset
for help on using the changeset viewer.