VirtualBox

Ignore:
Timestamp:
Apr 23, 2024 1:22:27 AM (10 months ago)
Author:
vboxsync
Message:

ValKit/bs3-cpu-basic-2: Applied g_cBs3ThresholdNativeRecompiler to the near call and return tests. bugref:10376

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-x0.c

    r103005 r104400  
    37413741    BS3REGCTX           CtxExpected;
    37423742    unsigned            iTest;
     3743    unsigned const      cMaxRecompRuns = g_cBs3ThresholdNativeRecompiler ? g_cBs3ThresholdNativeRecompiler : 1;
     3744    unsigned            iRecompRun;
    37433745
    37443746    /* make sure they're allocated  */
     
    38513853            //Bs3TestPrintf("cs:rip=%04RX16:%04RX64\n", Ctx.cs, Ctx.rip.u);
    38523854
    3853             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    3854             if (s_aTests[iTest].iWrap == 0 || !s_aTests[iTest].fOpSizePfx)
    3855                 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
    3856             else
    3857                 bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3855            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     3856            {
     3857                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     3858                if (s_aTests[iTest].iWrap == 0 || !s_aTests[iTest].fOpSizePfx)
     3859                    bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     3860                else
     3861                    bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3862            }
    38583863            g_usBs3TestStep++;
    38593864
    38603865            /* Again single stepping: */
    38613866            //Bs3TestPrintf("stepping...\n");
    3862             Bs3RegSetDr6(0);
    38633867            Ctx.rflags.u16        |= X86_EFL_TF;
    38643868            CtxExpected.rflags.u16 = Ctx.rflags.u16;
    3865             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    3866             if (s_aTests[iTest].iWrap == 0 || !s_aTests[iTest].fOpSizePfx)
    3867                 bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
    3868             else
    3869             {
    3870                 bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
    3871                 bs3CpuBasic2_CheckDr6InitVal();
     3869            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     3870            {
     3871                Bs3RegSetDr6(0);
     3872                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     3873                if (s_aTests[iTest].iWrap == 0 || !s_aTests[iTest].fOpSizePfx)
     3874                    bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     3875                else
     3876                {
     3877                    bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3878                    bs3CpuBasic2_CheckDr6InitVal();
     3879                }
    38723880            }
    38733881            Ctx.rflags.u16        &= ~X86_EFL_TF;
     
    38913899                    CtxExpected.rip.u = Ctx.rip.u = BS3_FP_OFF(s_aTests[iTest].pfnTest);
    38923900                    //Bs3TestPrintf("cs:rip=%04RX16:%04RX64 v1\n", Ctx.cs, Ctx.rip.u);
    3893                     Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    3894                     bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3901                    for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     3902                    {
     3903                        Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     3904                        bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3905                    }
    38953906                    g_usBs3TestStep++;
    38963907                }
     
    39113922                        CtxExpected.rsp.u -= s_aTests[iTest].fOpSizePfx ? 4 : 2;
    39123923                    //Bs3TestPrintf("cs:rip=%04RX16:%04RX64 v2\n", Ctx.cs, Ctx.rip.u);
    3913                     Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    3914                     bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3924                    for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     3925                    {
     3926                        Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     3927                        bs3CpuBasic2_CompareGpCtx(&TrapCtx, &CtxExpected, 0);
     3928                    }
    39153929                    g_usBs3TestStep++;
    39163930                }
     
    40644078                if (BS3_MODE_IS_16BIT_SYS(bMode))
    40654079                    g_uBs3TrapEipHint = s_aTests[iTest].fOpSizePfx ? 0 : Ctx.rip.u32;
    4066                 Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4067 
    4068                 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4080                for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4081                {
     4082                    Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4083                    bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4084                }
    40694085                g_usBs3TestStep++;
    40704086
    40714087                /* Again single stepping: */
    40724088                //Bs3TestPrintf("stepping...\n");
    4073                 Bs3RegSetDr6(0);
    40744089                Ctx.rflags.u16        |= X86_EFL_TF;
    40754090                CtxExpected.rflags.u16 = Ctx.rflags.u16;
    4076                 Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4077                 bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4091                for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4092                {
     4093                    Bs3RegSetDr6(0);
     4094                    Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4095                    bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4096                }
    40784097                Ctx.rflags.u16        &= ~X86_EFL_TF;
    40794098                CtxExpected.rflags.u16 = Ctx.rflags.u16;
     
    46774696    unsigned                iTest;
    46784697    BS3PTRUNION             StkPtr;
     4698    unsigned const          cMaxRecompRuns = g_cBs3ThresholdNativeRecompiler ? g_cBs3ThresholdNativeRecompiler : 1;
     4699    unsigned                iRecompRun;
    46794700
    46804701    /* make sure they're allocated  */
     
    47344755            //Bs3TestPrintf("cs:rip=%04RX16:%04RX64 -> %04RX16:%04RX64\n", Ctx.cs, Ctx.rip.u, CtxExpected.cs, CtxExpected.rip.u);
    47354756            //Bs3TestPrintf("ss:rsp=%04RX16:%04RX64\n", Ctx.ss, Ctx.rsp.u);
    4736             bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 4 : 2);
    4737             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4738             bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4757            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4758            {
     4759                bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 4 : 2);
     4760                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4761                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4762            }
    47394763            g_usBs3TestStep++;
    47404764
    47414765            /* Again single stepping: */
    47424766            //Bs3TestPrintf("stepping...\n");
    4743             Bs3RegSetDr6(X86_DR6_INIT_VAL);
    47444767            Ctx.rflags.u16        |= X86_EFL_TF;
    47454768            CtxExpected.rflags.u16 = Ctx.rflags.u16;
    4746             bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 4 : 2);
    4747             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4748             bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4769            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4770            {
     4771                Bs3RegSetDr6(X86_DR6_INIT_VAL);
     4772                bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 4 : 2);
     4773                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4774                bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4775            }
    47494776            Ctx.rflags.u16        &= ~X86_EFL_TF;
    47504777            CtxExpected.rflags.u16 = Ctx.rflags.u16;
     
    48124839            //Bs3TestPrintf("cs:rip=%04RX16:%04RX64 -> %04RX16:%04RX64\n", Ctx.cs, Ctx.rip.u, CtxExpected.cs, CtxExpected.rip.u);
    48134840            //Bs3TestPrintf("ss:rsp=%04RX16:%04RX64\n", Ctx.ss, Ctx.rsp.u);
    4814             bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 2 : 4);
    4815             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4816             bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4841            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4842            {
     4843                bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 2 : 4);
     4844                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4845                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4846            }
    48174847            g_usBs3TestStep++;
    48184848
    48194849            /* Again single stepping: */
    48204850            //Bs3TestPrintf("stepping...\n");
    4821             Bs3RegSetDr6(X86_DR6_INIT_VAL);
    48224851            Ctx.rflags.u16        |= X86_EFL_TF;
    48234852            CtxExpected.rflags.u16 = Ctx.rflags.u16;
    4824             bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 2 : 4);
    4825             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4826             bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4853            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4854            {
     4855                Bs3RegSetDr6(X86_DR6_INIT_VAL);
     4856                bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx ? 2 : 4);
     4857                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4858                bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4859            }
    48274860            Ctx.rflags.u16        &= ~X86_EFL_TF;
    48284861            CtxExpected.rflags.u16 = Ctx.rflags.u16;
     
    49014934            //Bs3TestPrintf("cs:rip=%04RX16:%04RX64 -> %04RX16:%04RX64\n", Ctx.cs, Ctx.rip.u, CtxExpected.cs, CtxExpected.rip.u);
    49024935            //Bs3TestPrintf("ss:rsp=%04RX16:%04RX64\n", Ctx.ss, Ctx.rsp.u);
    4903             bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx && !fFix64OpSize ? 2 : 8);
    4904             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4905             bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4936            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4937            {
     4938                bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx && !fFix64OpSize ? 2 : 8);
     4939                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4940                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxExpected);
     4941            }
    49064942            g_usBs3TestStep++;
    49074943
    49084944            /* Again single stepping: */
    49094945            //Bs3TestPrintf("stepping...\n");
    4910             Bs3RegSetDr6(X86_DR6_INIT_VAL);
    49114946            Ctx.rflags.u16        |= X86_EFL_TF;
    49124947            CtxExpected.rflags.u16 = Ctx.rflags.u16;
    4913             bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx && !fFix64OpSize ? 2 : 8);
    4914             Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
    4915             bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4948            for (iRecompRun = 0; iRecompRun < cMaxRecompRuns; iRecompRun++)
     4949            {
     4950                Bs3RegSetDr6(X86_DR6_INIT_VAL);
     4951                bs3CpuBasic2_retn_PrepStack(StkPtr, &CtxExpected, s_aTests[iTest].fOpSizePfx && !fFix64OpSize ? 2 : 8);
     4952                Bs3TrapSetJmpAndRestore(&Ctx, &TrapCtx);
     4953                bs3CpuBasic2_CompareDbCtx(&TrapCtx, &CtxExpected, X86_DR6_BS);
     4954            }
    49164955            Ctx.rflags.u16        &= ~X86_EFL_TF;
    49174956            CtxExpected.rflags.u16 = Ctx.rflags.u16;
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