VirtualBox

Changeset 104719 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
May 18, 2024 1:14:23 AM (7 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: add RM_RANGE test type to workers 1 & 5 (prep for maskmov instructions); bugref:9898

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r104718 r104719  
    9191    RM_REG = 0,
    9292    RM_MEM,
    93     RM_MEM_DI, /**< Memory operand pointer is implicitly RDI.  Hack for maskmovq, [v]maskmovdqu. */
     93    RM_RANGE,  /**< Instruction may fault anywhere within the memory address range.  Hack for vmaskmov[sd], vpmaskmov[dq]. */
     94    RM_MEM_DI, /**< Memory operand pointer is implicitly RDI and may fault anywhere in range.  Hack for maskmovq, [v]maskmovdqu. */
    9495    RM_MEM8,   /**< Memory operand is  8 bits.  Hack for movss and similar. */
    9596    RM_MEM16,  /**< Memory operand is 16 bits.  Hack for movss and similar. */
     
    916917                            if (bXcptExpect == X86_XCPT_PF)
    917918                                Ctx.cr2.u = (uintptr_t)puMemOp;
    918                             if (paTests[iTest].enmRm == RM_MEM_DI)
    919                             {
    920                                 Ctx.cr2Range = cbMemOp;
    921                             }
     919                            Ctx.cr2Range = (paTests[iTest].enmRm == RM_MEM_DI || paTests[iTest].enmRm == RM_RANGE) ? cbMemOp - 1 : 0;
    922920                            Bs3TestCheckRegCtxEx(&TrapFrame.Ctx, &Ctx, bXcptExpect == X86_XCPT_DB ? cbInstr + 1 : 0, 0,
    923921                                                 bXcptExpect == X86_XCPT_DB || BS3_MODE_IS_16BIT_SYS(bMode) ? 0 : X86_EFL_RF,
    924922                                                 pszMode, idTestStep);
    925923                            Ctx.cr2.u = 0;
     924                            Ctx.cr2Range = 0;
     925
    926926                            if (paTests[iTest].enmRm == RM_MEM_DI)
    927927                            {
     
    1354313543                            if (bXcptExpect == X86_XCPT_PF)
    1354413544                                Ctx.cr2.u = (uintptr_t)puMemOp;
     13545                            Ctx.cr2Range = (paTests[iTest].enmRm == RM_MEM_DI || paTests[iTest].enmRm == RM_RANGE) ? cbMemOp - 1 : 0;
    1354513546                            Bs3TestCheckRegCtxEx(&TrapFrame.Ctx, &Ctx, bXcptExpect == X86_XCPT_DB ? cbInstr + 1 : 0, 0,
    1354613547                                                 bXcptExpect == X86_XCPT_DB || BS3_MODE_IS_16BIT_SYS(bMode) ? 0 : X86_EFL_RF,
    1354713548                                                 pszMode, idTestStep);
    1354813549                            Ctx.cr2.u = 0;
     13550                            Ctx.cr2Range = 0;
    1354913551
    1355013552                            if (   paTests[iTest].enmRm >= RM_MEM
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