Changeset 97357 in vbox
- Timestamp:
- Oct 31, 2022 10:47:43 PM (2 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsOneByte.cpp.h
r97356 r97357 2804 2804 IEM_MC_BEGIN(0, 0); 2805 2805 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { 2806 IEM_MC_REL_JMP_S8 (i8Imm);2806 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2807 2807 } IEM_MC_ELSE() { 2808 2808 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 2827 2827 IEM_MC_ADVANCE_RIP_AND_FINISH(); 2828 2828 } IEM_MC_ELSE() { 2829 IEM_MC_REL_JMP_S8 (i8Imm);2829 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2830 2830 } IEM_MC_ENDIF(); 2831 2831 IEM_MC_END(); … … 2845 2845 IEM_MC_BEGIN(0, 0); 2846 2846 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { 2847 IEM_MC_REL_JMP_S8 (i8Imm);2847 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2848 2848 } IEM_MC_ELSE() { 2849 2849 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 2868 2868 IEM_MC_ADVANCE_RIP_AND_FINISH(); 2869 2869 } IEM_MC_ELSE() { 2870 IEM_MC_REL_JMP_S8 (i8Imm);2870 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2871 2871 } IEM_MC_ENDIF(); 2872 2872 IEM_MC_END(); … … 2887 2887 IEM_MC_BEGIN(0, 0); 2888 2888 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { 2889 IEM_MC_REL_JMP_S8 (i8Imm);2889 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2890 2890 } IEM_MC_ELSE() { 2891 2891 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 2910 2910 IEM_MC_ADVANCE_RIP_AND_FINISH(); 2911 2911 } IEM_MC_ELSE() { 2912 IEM_MC_REL_JMP_S8 (i8Imm);2912 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2913 2913 } IEM_MC_ENDIF(); 2914 2914 IEM_MC_END(); … … 2929 2929 IEM_MC_BEGIN(0, 0); 2930 2930 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { 2931 IEM_MC_REL_JMP_S8 (i8Imm);2931 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2932 2932 } IEM_MC_ELSE() { 2933 2933 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 2952 2952 IEM_MC_ADVANCE_RIP_AND_FINISH(); 2953 2953 } IEM_MC_ELSE() { 2954 IEM_MC_REL_JMP_S8 (i8Imm);2954 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2955 2955 } IEM_MC_ENDIF(); 2956 2956 IEM_MC_END(); … … 2971 2971 IEM_MC_BEGIN(0, 0); 2972 2972 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { 2973 IEM_MC_REL_JMP_S8 (i8Imm);2973 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2974 2974 } IEM_MC_ELSE() { 2975 2975 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 2994 2994 IEM_MC_ADVANCE_RIP_AND_FINISH(); 2995 2995 } IEM_MC_ELSE() { 2996 IEM_MC_REL_JMP_S8 (i8Imm);2996 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 2997 2997 } IEM_MC_ENDIF(); 2998 2998 IEM_MC_END(); … … 3013 3013 IEM_MC_BEGIN(0, 0); 3014 3014 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { 3015 IEM_MC_REL_JMP_S8 (i8Imm);3015 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 3016 3016 } IEM_MC_ELSE() { 3017 3017 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 3036 3036 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3037 3037 } IEM_MC_ELSE() { 3038 IEM_MC_REL_JMP_S8 (i8Imm);3038 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 3039 3039 } IEM_MC_ENDIF(); 3040 3040 IEM_MC_END(); … … 3055 3055 IEM_MC_BEGIN(0, 0); 3056 3056 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { 3057 IEM_MC_REL_JMP_S8 (i8Imm);3057 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 3058 3058 } IEM_MC_ELSE() { 3059 3059 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 3078 3078 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3079 3079 } IEM_MC_ELSE() { 3080 IEM_MC_REL_JMP_S8 (i8Imm);3080 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 3081 3081 } IEM_MC_ENDIF(); 3082 3082 IEM_MC_END(); … … 3097 3097 IEM_MC_BEGIN(0, 0); 3098 3098 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { 3099 IEM_MC_REL_JMP_S8 (i8Imm);3099 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 3100 3100 } IEM_MC_ELSE() { 3101 3101 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 3120 3120 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3121 3121 } IEM_MC_ELSE() { 3122 IEM_MC_REL_JMP_S8 (i8Imm);3122 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 3123 3123 } IEM_MC_ENDIF(); 3124 3124 IEM_MC_END(); … … 10313 10313 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); 10314 10314 IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_NOT_SET(X86_EFL_ZF) { 10315 IEM_MC_REL_JMP_S8 (i8Imm);10315 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10316 10316 } IEM_MC_ELSE() { 10317 10317 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10324 10324 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); 10325 10325 IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_NOT_SET(X86_EFL_ZF) { 10326 IEM_MC_REL_JMP_S8 (i8Imm);10326 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10327 10327 } IEM_MC_ELSE() { 10328 10328 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10335 10335 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); 10336 10336 IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_NOT_SET(X86_EFL_ZF) { 10337 IEM_MC_REL_JMP_S8 (i8Imm);10337 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10338 10338 } IEM_MC_ELSE() { 10339 10339 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10363 10363 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); 10364 10364 IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_SET(X86_EFL_ZF) { 10365 IEM_MC_REL_JMP_S8 (i8Imm);10365 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10366 10366 } IEM_MC_ELSE() { 10367 10367 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10374 10374 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); 10375 10375 IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_SET(X86_EFL_ZF) { 10376 IEM_MC_REL_JMP_S8 (i8Imm);10376 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10377 10377 } IEM_MC_ELSE() { 10378 10378 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10385 10385 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); 10386 10386 IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_SET(X86_EFL_ZF) { 10387 IEM_MC_REL_JMP_S8 (i8Imm);10387 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10388 10388 } IEM_MC_ELSE() { 10389 10389 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10451 10451 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); 10452 10452 IEM_MC_IF_CX_IS_NZ() { 10453 IEM_MC_REL_JMP_S8 (i8Imm);10453 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10454 10454 } IEM_MC_ELSE() { 10455 10455 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10462 10462 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); 10463 10463 IEM_MC_IF_ECX_IS_NZ() { 10464 IEM_MC_REL_JMP_S8 (i8Imm);10464 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10465 10465 } IEM_MC_ELSE() { 10466 10466 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10473 10473 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); 10474 10474 IEM_MC_IF_RCX_IS_NZ() { 10475 IEM_MC_REL_JMP_S8 (i8Imm);10475 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10476 10476 } IEM_MC_ELSE() { 10477 10477 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 10502 10502 IEM_MC_ADVANCE_RIP_AND_FINISH(); 10503 10503 } IEM_MC_ELSE() { 10504 IEM_MC_REL_JMP_S8 (i8Imm);10504 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10505 10505 } IEM_MC_ENDIF(); 10506 10506 IEM_MC_END(); … … 10512 10512 IEM_MC_ADVANCE_RIP_AND_FINISH(); 10513 10513 } IEM_MC_ELSE() { 10514 IEM_MC_REL_JMP_S8 (i8Imm);10514 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10515 10515 } IEM_MC_ENDIF(); 10516 10516 IEM_MC_END(); … … 10522 10522 IEM_MC_ADVANCE_RIP_AND_FINISH(); 10523 10523 } IEM_MC_ELSE() { 10524 IEM_MC_REL_JMP_S8 (i8Imm);10524 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10525 10525 } IEM_MC_ENDIF(); 10526 10526 IEM_MC_END(); … … 10617 10617 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 10618 10618 IEM_MC_BEGIN(0, 0); 10619 IEM_MC_REL_JMP_S16 (i16Imm);10619 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 10620 10620 IEM_MC_END(); 10621 10621 return VINF_SUCCESS; … … 10627 10627 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 10628 10628 IEM_MC_BEGIN(0, 0); 10629 IEM_MC_REL_JMP_S32 (i32Imm);10629 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 10630 10630 IEM_MC_END(); 10631 10631 return VINF_SUCCESS; … … 10668 10668 10669 10669 IEM_MC_BEGIN(0, 0); 10670 IEM_MC_REL_JMP_S8 (i8Imm);10670 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); 10671 10671 IEM_MC_END(); 10672 10672 return VINF_SUCCESS; … … 11717 11717 IEM_MC_LOCAL(uint16_t, u16Target); 11718 11718 IEM_MC_FETCH_GREG_U16(u16Target, IEM_GET_MODRM_RM(pVCpu, bRm)); 11719 IEM_MC_SET_RIP_U16 (u16Target);11719 IEM_MC_SET_RIP_U16_AND_FINISH(u16Target); 11720 11720 IEM_MC_END() 11721 11721 return VINF_SUCCESS; … … 11725 11725 IEM_MC_LOCAL(uint32_t, u32Target); 11726 11726 IEM_MC_FETCH_GREG_U32(u32Target, IEM_GET_MODRM_RM(pVCpu, bRm)); 11727 IEM_MC_SET_RIP_U32 (u32Target);11727 IEM_MC_SET_RIP_U32_AND_FINISH(u32Target); 11728 11728 IEM_MC_END() 11729 11729 return VINF_SUCCESS; … … 11733 11733 IEM_MC_LOCAL(uint64_t, u64Target); 11734 11734 IEM_MC_FETCH_GREG_U64(u64Target, IEM_GET_MODRM_RM(pVCpu, bRm)); 11735 IEM_MC_SET_RIP_U64 (u64Target);11735 IEM_MC_SET_RIP_U64_AND_FINISH(u64Target); 11736 11736 IEM_MC_END() 11737 11737 return VINF_SUCCESS; … … 11752 11752 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11753 11753 IEM_MC_FETCH_MEM_U16(u16Target, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 11754 IEM_MC_SET_RIP_U16 (u16Target);11754 IEM_MC_SET_RIP_U16_AND_FINISH(u16Target); 11755 11755 IEM_MC_END() 11756 11756 return VINF_SUCCESS; … … 11763 11763 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11764 11764 IEM_MC_FETCH_MEM_U32(u32Target, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 11765 IEM_MC_SET_RIP_U32 (u32Target);11765 IEM_MC_SET_RIP_U32_AND_FINISH(u32Target); 11766 11766 IEM_MC_END() 11767 11767 return VINF_SUCCESS; … … 11774 11774 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11775 11775 IEM_MC_FETCH_MEM_U64(u64Target, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 11776 IEM_MC_SET_RIP_U64 (u64Target);11776 IEM_MC_SET_RIP_U64_AND_FINISH(u64Target); 11777 11777 IEM_MC_END() 11778 11778 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r97356 r97357 7779 7779 IEM_MC_BEGIN(0, 0); 7780 7780 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { 7781 IEM_MC_REL_JMP_S16 (i16Imm);7781 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7782 7782 } IEM_MC_ELSE() { 7783 7783 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 7792 7792 IEM_MC_BEGIN(0, 0); 7793 7793 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { 7794 IEM_MC_REL_JMP_S32 (i32Imm);7794 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 7795 7795 } IEM_MC_ELSE() { 7796 7796 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 7817 7817 IEM_MC_ADVANCE_RIP_AND_FINISH(); 7818 7818 } IEM_MC_ELSE() { 7819 IEM_MC_REL_JMP_S16 (i16Imm);7819 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7820 7820 } IEM_MC_ENDIF(); 7821 7821 IEM_MC_END(); … … 7830 7830 IEM_MC_ADVANCE_RIP_AND_FINISH(); 7831 7831 } IEM_MC_ELSE() { 7832 IEM_MC_REL_JMP_S32 (i32Imm);7832 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 7833 7833 } IEM_MC_ENDIF(); 7834 7834 IEM_MC_END(); … … 7851 7851 IEM_MC_BEGIN(0, 0); 7852 7852 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { 7853 IEM_MC_REL_JMP_S16 (i16Imm);7853 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7854 7854 } IEM_MC_ELSE() { 7855 7855 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 7864 7864 IEM_MC_BEGIN(0, 0); 7865 7865 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { 7866 IEM_MC_REL_JMP_S32 (i32Imm);7866 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 7867 7867 } IEM_MC_ELSE() { 7868 7868 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 7889 7889 IEM_MC_ADVANCE_RIP_AND_FINISH(); 7890 7890 } IEM_MC_ELSE() { 7891 IEM_MC_REL_JMP_S16 (i16Imm);7891 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7892 7892 } IEM_MC_ENDIF(); 7893 7893 IEM_MC_END(); … … 7902 7902 IEM_MC_ADVANCE_RIP_AND_FINISH(); 7903 7903 } IEM_MC_ELSE() { 7904 IEM_MC_REL_JMP_S32 (i32Imm);7904 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 7905 7905 } IEM_MC_ENDIF(); 7906 7906 IEM_MC_END(); … … 7923 7923 IEM_MC_BEGIN(0, 0); 7924 7924 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { 7925 IEM_MC_REL_JMP_S16 (i16Imm);7925 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7926 7926 } IEM_MC_ELSE() { 7927 7927 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 7936 7936 IEM_MC_BEGIN(0, 0); 7937 7937 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { 7938 IEM_MC_REL_JMP_S32 (i32Imm);7938 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 7939 7939 } IEM_MC_ELSE() { 7940 7940 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 7961 7961 IEM_MC_ADVANCE_RIP_AND_FINISH(); 7962 7962 } IEM_MC_ELSE() { 7963 IEM_MC_REL_JMP_S16 (i16Imm);7963 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7964 7964 } IEM_MC_ENDIF(); 7965 7965 IEM_MC_END(); … … 7974 7974 IEM_MC_ADVANCE_RIP_AND_FINISH(); 7975 7975 } IEM_MC_ELSE() { 7976 IEM_MC_REL_JMP_S32 (i32Imm);7976 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 7977 7977 } IEM_MC_ENDIF(); 7978 7978 IEM_MC_END(); … … 7995 7995 IEM_MC_BEGIN(0, 0); 7996 7996 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { 7997 IEM_MC_REL_JMP_S16 (i16Imm);7997 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 7998 7998 } IEM_MC_ELSE() { 7999 7999 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8008 8008 IEM_MC_BEGIN(0, 0); 8009 8009 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { 8010 IEM_MC_REL_JMP_S32 (i32Imm);8010 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8011 8011 } IEM_MC_ELSE() { 8012 8012 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8033 8033 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8034 8034 } IEM_MC_ELSE() { 8035 IEM_MC_REL_JMP_S16 (i16Imm);8035 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8036 8036 } IEM_MC_ENDIF(); 8037 8037 IEM_MC_END(); … … 8046 8046 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8047 8047 } IEM_MC_ELSE() { 8048 IEM_MC_REL_JMP_S32 (i32Imm);8048 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8049 8049 } IEM_MC_ENDIF(); 8050 8050 IEM_MC_END(); … … 8067 8067 IEM_MC_BEGIN(0, 0); 8068 8068 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { 8069 IEM_MC_REL_JMP_S16 (i16Imm);8069 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8070 8070 } IEM_MC_ELSE() { 8071 8071 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8080 8080 IEM_MC_BEGIN(0, 0); 8081 8081 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { 8082 IEM_MC_REL_JMP_S32 (i32Imm);8082 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8083 8083 } IEM_MC_ELSE() { 8084 8084 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8105 8105 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8106 8106 } IEM_MC_ELSE() { 8107 IEM_MC_REL_JMP_S16 (i16Imm);8107 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8108 8108 } IEM_MC_ENDIF(); 8109 8109 IEM_MC_END(); … … 8118 8118 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8119 8119 } IEM_MC_ELSE() { 8120 IEM_MC_REL_JMP_S32 (i32Imm);8120 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8121 8121 } IEM_MC_ENDIF(); 8122 8122 IEM_MC_END(); … … 8139 8139 IEM_MC_BEGIN(0, 0); 8140 8140 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { 8141 IEM_MC_REL_JMP_S16 (i16Imm);8141 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8142 8142 } IEM_MC_ELSE() { 8143 8143 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8152 8152 IEM_MC_BEGIN(0, 0); 8153 8153 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { 8154 IEM_MC_REL_JMP_S32 (i32Imm);8154 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8155 8155 } IEM_MC_ELSE() { 8156 8156 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8177 8177 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8178 8178 } IEM_MC_ELSE() { 8179 IEM_MC_REL_JMP_S16 (i16Imm);8179 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8180 8180 } IEM_MC_ENDIF(); 8181 8181 IEM_MC_END(); … … 8190 8190 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8191 8191 } IEM_MC_ELSE() { 8192 IEM_MC_REL_JMP_S32 (i32Imm);8192 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8193 8193 } IEM_MC_ENDIF(); 8194 8194 IEM_MC_END(); … … 8211 8211 IEM_MC_BEGIN(0, 0); 8212 8212 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { 8213 IEM_MC_REL_JMP_S16 (i16Imm);8213 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8214 8214 } IEM_MC_ELSE() { 8215 8215 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8224 8224 IEM_MC_BEGIN(0, 0); 8225 8225 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { 8226 IEM_MC_REL_JMP_S32 (i32Imm);8226 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8227 8227 } IEM_MC_ELSE() { 8228 8228 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8249 8249 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8250 8250 } IEM_MC_ELSE() { 8251 IEM_MC_REL_JMP_S16 (i16Imm);8251 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8252 8252 } IEM_MC_ENDIF(); 8253 8253 IEM_MC_END(); … … 8262 8262 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8263 8263 } IEM_MC_ELSE() { 8264 IEM_MC_REL_JMP_S32 (i32Imm);8264 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8265 8265 } IEM_MC_ENDIF(); 8266 8266 IEM_MC_END(); … … 8283 8283 IEM_MC_BEGIN(0, 0); 8284 8284 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { 8285 IEM_MC_REL_JMP_S16 (i16Imm);8285 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8286 8286 } IEM_MC_ELSE() { 8287 8287 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8296 8296 IEM_MC_BEGIN(0, 0); 8297 8297 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { 8298 IEM_MC_REL_JMP_S32 (i32Imm);8298 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8299 8299 } IEM_MC_ELSE() { 8300 8300 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 8321 8321 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8322 8322 } IEM_MC_ELSE() { 8323 IEM_MC_REL_JMP_S16 (i16Imm);8323 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 8324 8324 } IEM_MC_ENDIF(); 8325 8325 IEM_MC_END(); … … 8334 8334 IEM_MC_ADVANCE_RIP_AND_FINISH(); 8335 8335 } IEM_MC_ELSE() { 8336 IEM_MC_REL_JMP_S32 (i32Imm);8336 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 8337 8337 } IEM_MC_ENDIF(); 8338 8338 IEM_MC_END(); -
trunk/src/VBox/VMM/include/IEMMc.h
r97356 r97357 58 58 * if not the last MC statement. */ 59 59 #define IEM_MC_ADVANCE_RIP_AND_FINISH() iemRegUpdateRipAndClearRF(pVCpu) 60 #define IEM_MC_REL_JMP_S8(a_i8) IEM_MC_RETURN_ON_FAILURE(iemRegRipRelativeJumpS8(pVCpu, a_i8)) 61 #define IEM_MC_REL_JMP_S16(a_i16) IEM_MC_RETURN_ON_FAILURE(iemRegRipRelativeJumpS16(pVCpu, a_i16)) 62 #define IEM_MC_REL_JMP_S32(a_i32) IEM_MC_RETURN_ON_FAILURE(iemRegRipRelativeJumpS32(pVCpu, a_i32)) 63 #define IEM_MC_SET_RIP_U16(a_u16NewIP) IEM_MC_RETURN_ON_FAILURE(iemRegRipJump((pVCpu), (a_u16NewIP))) 64 #define IEM_MC_SET_RIP_U32(a_u32NewIP) IEM_MC_RETURN_ON_FAILURE(iemRegRipJump((pVCpu), (a_u32NewIP))) 65 #define IEM_MC_SET_RIP_U64(a_u64NewIP) IEM_MC_RETURN_ON_FAILURE(iemRegRipJump((pVCpu), (a_u64NewIP))) 60 /** Tries to set RIP (may trigger \#GP) and finishes the instruction. */ 61 #define IEM_MC_REL_JMP_S8_AND_FINISH(a_i8) IEM_MC_RETURN_ON_FAILURE(iemRegRipRelativeJumpS8(pVCpu, a_i8)) 62 /** Tries to set RIP (may trigger \#GP) and finishes the instruction. */ 63 #define IEM_MC_REL_JMP_S16_AND_FINISH(a_i16) IEM_MC_RETURN_ON_FAILURE(iemRegRipRelativeJumpS16(pVCpu, a_i16)) 64 /** Tries to set RIP (may trigger \#GP) and finishes the instruction. */ 65 #define IEM_MC_REL_JMP_S32_AND_FINISH(a_i32) IEM_MC_RETURN_ON_FAILURE(iemRegRipRelativeJumpS32(pVCpu, a_i32)) 66 /** Tries to set RIP (may trigger \#GP) and finishes the instruction. */ 67 #define IEM_MC_SET_RIP_U16_AND_FINISH(a_u16NewIP) IEM_MC_RETURN_ON_FAILURE(iemRegRipJump((pVCpu), (a_u16NewIP))) 68 /** Tries to set RIP (may trigger \#GP) and finishes the instruction. */ 69 #define IEM_MC_SET_RIP_U32_AND_FINISH(a_u32NewIP) IEM_MC_RETURN_ON_FAILURE(iemRegRipJump((pVCpu), (a_u32NewIP))) 70 /** Tries to set RIP (may trigger \#GP) and finishes the instruction. */ 71 #define IEM_MC_SET_RIP_U64_AND_FINISH(a_u64NewIP) IEM_MC_RETURN_ON_FAILURE(iemRegRipJump((pVCpu), (a_u64NewIP))) 72 66 73 #define IEM_MC_RAISE_DIVIDE_ERROR() return iemRaiseDivideError(pVCpu) 67 74 #define IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE() \ -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r97356 r97357 576 576 577 577 #define IEM_MC_ADVANCE_RIP_AND_FINISH() do { (void)fMcBegin; return VINF_SUCCESS; } while (0) 578 #define IEM_MC_REL_JMP_S8 (a_i8) do { (void)fMcBegin; CHK_TYPE(int8_t, a_i8); } while (0)579 #define IEM_MC_REL_JMP_S16 (a_i16) do { (void)fMcBegin; CHK_TYPE(int16_t, a_i16); } while (0)580 #define IEM_MC_REL_JMP_S32 (a_i32) do { (void)fMcBegin; CHK_TYPE(int32_t, a_i32); } while (0)581 #define IEM_MC_SET_RIP_U16 (a_u16NewIP) do { (void)fMcBegin; CHK_TYPE(uint16_t, a_u16NewIP); } while (0)582 #define IEM_MC_SET_RIP_U32 (a_u32NewIP) do { (void)fMcBegin; CHK_TYPE(uint32_t, a_u32NewIP); } while (0)583 #define IEM_MC_SET_RIP_U64 (a_u64NewIP) do { (void)fMcBegin; CHK_TYPE(uint64_t, a_u64NewIP); } while (0)578 #define IEM_MC_REL_JMP_S8_AND_FINISH(a_i8) do { (void)fMcBegin; CHK_TYPE(int8_t, a_i8); return VINF_SUCCESS; } while (0) 579 #define IEM_MC_REL_JMP_S16_AND_FINISH(a_i16) do { (void)fMcBegin; CHK_TYPE(int16_t, a_i16); return VINF_SUCCESS; } while (0) 580 #define IEM_MC_REL_JMP_S32_AND_FINISH(a_i32) do { (void)fMcBegin; CHK_TYPE(int32_t, a_i32); return VINF_SUCCESS; } while (0) 581 #define IEM_MC_SET_RIP_U16_AND_FINISH(a_u16NewIP) do { (void)fMcBegin; CHK_TYPE(uint16_t, a_u16NewIP); return VINF_SUCCESS; } while (0) 582 #define IEM_MC_SET_RIP_U32_AND_FINISH(a_u32NewIP) do { (void)fMcBegin; CHK_TYPE(uint32_t, a_u32NewIP); return VINF_SUCCESS; } while (0) 583 #define IEM_MC_SET_RIP_U64_AND_FINISH(a_u64NewIP) do { (void)fMcBegin; CHK_TYPE(uint64_t, a_u64NewIP); return VINF_SUCCESS; } while (0) 584 584 #define IEM_MC_RAISE_DIVIDE_ERROR() do { (void)fMcBegin; return VERR_TRPM_ACTIVE_TRAP; } while (0) 585 585 #define IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE() do { (void)fMcBegin; } while (0)
Note:
See TracChangeset
for help on using the changeset viewer.