VirtualBox

Changeset 99329 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Apr 7, 2023 12:05:54 AM (21 months ago)
Author:
vboxsync
Message:

VMM/IEM: Use IEMOP_HLP_DONE_DECODING_*EX() rather than IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT to do the CPUID check. bugref:10369

File:
1 edited

Legend:

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

    r99328 r99329  
    5050        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    5151        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    52         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     52        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    5353        IEM_MC_BEGIN(2, 0);
    5454        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    7878
    7979        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    80         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     80        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    8181        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    8282        IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     
    112112        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    113113        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    114         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     114        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    115115        IEM_MC_BEGIN(2, 0);
    116116        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    140140
    141141        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    142         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     142        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    143143        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    144144        IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     
    523523         * MMX, MMX.
    524524         */
    525         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     525        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    526526        IEM_MC_BEGIN(2, 0);
    527527        IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    551551
    552552        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    553         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     553        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    554554        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    555555        IEM_MC_FETCH_MEM_U32_ZX_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     
    705705        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    706706        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    707         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     707        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    708708        IEM_MC_BEGIN(2, 0);
    709709        IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    733733
    734734        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    735         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     735        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    736736        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    737737        IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); /* intel docs this to be full 64-bit read */
     
    61896189        {
    61906190            /* MMX, greg64 */
    6191             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6191            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    61926192            IEM_MC_BEGIN(0, 1);
    61936193            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    62116211
    62126212            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    6213             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6213            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    62146214            IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    62156215            IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
     
    62416241        {
    62426242            /* MMX, greg32 */
    6243             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6243            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    62446244            IEM_MC_BEGIN(0, 1);
    62456245            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    62636263
    62646264            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    6265             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6265            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    62666266            IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    62676267            IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
     
    64016401         * Register, register.
    64026402         */
    6403         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6403        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    64046404        IEM_MC_BEGIN(0, 1);
    64056405        IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    64256425
    64266426        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    6427         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6427        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    64286428        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    64296429        IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
     
    67026702         */
    67036703        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    6704         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     6704        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    67056705
    67066706        IEM_MC_BEGIN(2, 0);
     
    73097309        {
    73107310            /* greg64, MMX */
    7311             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7311            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    73127312            IEM_MC_BEGIN(0, 1);
    73137313            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    73317331
    73327332            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    7333             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7333            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    73347334            IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    73357335            IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
     
    73617361        {
    73627362            /* greg32, MMX */
    7363             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7363            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    73647364            IEM_MC_BEGIN(0, 1);
    73657365            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    73837383
    73847384            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    7385             IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7385            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    73867386            IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    73877387            IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
     
    75697569        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    75707570        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    7571         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7571        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    75727572        IEM_MC_BEGIN(0, 1);
    75737573        IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    75927592
    75937593        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    7594         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7594        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    75957595        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    75967596        IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
     
    1330013300
    1330113301        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    13302         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     13302        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    1330313303        IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    1330413304        IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE();
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