VirtualBox

Changeset 104721 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 18, 2024 2:22:07 AM (7 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: handle PF complexities in test worker 5 (prep for maskmov instructions); bugref:9898

File:
1 edited

Legend:

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

    r104720 r104721  
    1329013290    RTUINT256U      uSrc1;
    1329113291    RTUINT256U      uDstOut;
     13292    uint8_t         fFlags;
    1329213293} BS3CPUINSTR3_TEST5_VALUES_T;
     13294
     13295/** this test cannot trigger a page fault despite general behavior of the instruction */
     13296#define BS3_TEST_F_NO_PF RT_BIT(0)
    1329313297
    1329413298typedef struct BS3CPUINSTR3_TEST5_T
     
    1342013424                            if (BS3_SKIPIT(bRing, iCfg, iTest, iVal, 0)) continue;
    1342113425
     13426                            /* Do not expect PF from instructions which are flagged as never faulting */
     13427                            if (fPf && bXcptExpect == X86_XCPT_PF && paValues[iVal].fFlags & BS3_TEST_F_NO_PF)
     13428                                bXcptExpect = X86_XCPT_DB;
     13429
    1342213430                            /*
    1342313431                             * Set up the context and some expectations.
     
    1344313451                                if (paTests[iTest].iRegDst == UINT8_MAX)
    1344413452                                    BS3_ASSERT(fSseInstr);
    13445                                 else
     13453                                if (bXcptExpect != X86_XCPT_DB)
    1344613454                                    uMemOpExpect = paValues[iVal].uSrc1;
    1344713455                            }
     
    1350313511                             */
    1350413512                            cErrors = Bs3TestSubErrorCount();
     13513
     13514                            /* Instructions which access memory haphazardly may PF haphazardly */
     13515                            if (fPf && paTests[iTest].enmRm == RM_RANGE && TrapFrame.bXcpt == X86_XCPT_PF)
     13516                                bXcptExpect = X86_XCPT_PF;
    1350513517
    1350613518                            if (fMmxInstr && bXcptExpect == X86_XCPT_DB)
     
    1354713559                            if (   paTests[iTest].enmRm >= RM_MEM
    1354813560                                && Bs3MemCmp(puMemOpAlias, &uMemOpExpect, cbMemOp) != 0)
    13549                                 Bs3TestFailedF("Expected uMemOp %.*Rhxs, got %.*Rhxs", cbMemOp, &uMemOpExpect, cbMemOp, puMemOpAlias);
     13561                                /* Instructions which access memory haphazardly may or may not complete their work */
     13562                                if (paTests[iTest].enmRm != RM_RANGE || TrapFrame.bXcpt != X86_XCPT_PF)
     13563                                    Bs3TestFailedF("Expected uMemOp %.*Rhxs, got %.*Rhxs", cbMemOp, &uMemOpExpect, cbMemOp, puMemOpAlias);
    1355013564
    1355113565                            if (cErrors != Bs3TestSubErrorCount())
     
    1359713611            /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
    1359813612            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13599             /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     13613            /* => */ RTUINT256_INIT_C(0, 0, 0, 0),
     13614            /*flgs*/ 0 },
    1360013615        {   /*mask*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1360113616            /*src2*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1360213617            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13603             /* => */ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff) },
     13618            /* => */ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     13619            /*flgs*/ 0 },
    1360413620        {   /*mask*/ RTUINT256_INIT_C(0x0000008000000000, 0x0000091000007f00,                  0, 0x8080808080808080),
    1360513621            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1360613622            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13607             /* => */ RTUINT256_INIT_C(0xb1b2b3f4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8) },
     13623            /* => */ RTUINT256_INIT_C(0xb1b2b3f4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8),
     13624            /*flgs*/ 0 },
    1360813625        {   /*mask*/ RTUINT256_INIT_C(0x8080808080808080, 0x8080808080808080, 0x8080808080808080, 0x8080808080808080),
    1360913626            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1361013627            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13611             /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     13628            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     13629            /*flgs*/ 0 },
    1361213630        {   /*mask*/ RTUINT256_INIT_C(0x1234567890abcdef, 0xfedcba0987654321, 0xfedcba0987654321, 0x1234567890abcdef),
    1361313631            /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
    1361413632            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
    13615             /* => */ RTUINT256_INIT_C(0xddddeeee77778888, 0x111122aa33bbcccc, 0x111122aa33bbcccc, 0xddddeeee77778888) },
     13633            /* => */ RTUINT256_INIT_C(0xddddeeee77778888, 0x111122aa33bbcccc, 0x111122aa33bbcccc, 0xddddeeee77778888),
     13634            /*flgs*/ 0 },
    1361613635    };
    1361713636
     
    1367013689            /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
    1367113690            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13672             /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     13691            /* => */ RTUINT256_INIT_C(0, 0, 0, 0),
     13692            /*flgs*/ 0 },
    1367313693        {   /*mask*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1367413694            /*src2*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1367513695            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13676             /* => */ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff) },
     13696            /* => */ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     13697            /*flgs*/ 0 },
    1367713698        {   /*mask*/ RTUINT256_INIT_C(0x0000008000000000, 0x0000091000007f00,                  0, 0x8080808080808080),
    1367813699            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1367913700            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13680             /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8) },
     13701            /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8),
     13702            /*flgs*/ 0 },
    1368113703        {   /*mask*/ RTUINT256_INIT_C(0x8080808080808080, 0x8080808080808080, 0x8080808080808080, 0x8080808080808080),
    1368213704            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1368313705            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13684             /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     13706            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     13707            /*flgs*/ 0 },
    1368513708        {   /*mask*/ RTUINT256_INIT_C(0x1234567890abcdef, 0xfedcba0987654321, 0xfedcba0987654321, 0x1234567890abcdef),
    1368613709            /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
    1368713710            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
    13688             /* => */ RTUINT256_INIT_C(0xddddeeee77778888, 0x1111222233334444, 0x1111222233334444, 0xddddeeee77778888) },
     13711            /* => */ RTUINT256_INIT_C(0xddddeeee77778888, 0x1111222233334444, 0x1111222233334444, 0xddddeeee77778888),
     13712            /*flgs*/ 0 },
    1368913713    };
    1369013714
     
    1374313767            /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
    1374413768            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13745             /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     13769            /* => */ RTUINT256_INIT_C(0, 0, 0, 0),
     13770            /*flgs*/ 0 },
    1374613771        {   /*mask*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1374713772            /*src2*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1374813773            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13749             /* => */ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff) },
     13774            /* => */ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     13775            /*flgs*/ 0 },
    1375013776        {   /*mask*/ RTUINT256_INIT_C(0x0000008000000000, 0x0000091000007f00,                  0, 0x8080808080808080),
    1375113777            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1375213778            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13753             /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8) },
     13779            /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8),
     13780            /*flgs*/ 0 },
    1375413781        {   /*mask*/ RTUINT256_INIT_C(0x8080808080808080, 0x8080808080808080, 0x8080808080808080, 0x8080808080808080),
    1375513782            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1375613783            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13757             /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     13784            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     13785            /*flgs*/ 0 },
    1375813786        {   /*mask*/ RTUINT256_INIT_C(0x1234567890abcdef, 0xfedcba0987654321, 0xfedcba0987654321, 0x1234567890abcdef),
    1375913787            /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
    1376013788            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
    13761             /* => */ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x1111222233334444, 0x1111222233334444, 0xddddeeeeffff0000) },
     13789            /* => */ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x1111222233334444, 0x1111222233334444, 0xddddeeeeffff0000),
     13790            /*flgs*/ 0 },
    1376213791    };
    1376313792
     
    1381613845            /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
    1381713846            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
    13818             /* => */ RTUINT256_INIT_C(1, 2, 0, 0) },
     13847            /* => */ RTUINT256_INIT_C(1, 2, 0, 0),
     13848            /*flgs*/ 0 },
    1381913849        {   /*mask*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1382013850            /*src2*/ RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
    1382113851            /*src1*/ RTUINT256_INIT_C(                 0,                  0,                  0,                  0),
    13822             /* => */ RTUINT256_INIT_C(                 5,                  6, 0xf79feefafffffffb, 0xf7bffefdfffffffd) },
     13852            /* => */ RTUINT256_INIT_C(                 5,                  6, 0xf79feefafffffffb, 0xf7bffefdfffffffd),
     13853            /*flgs*/ 0 },
    1382313854        {   /*mask*/ RTUINT256_INIT_C(0x0000008000000000, 0x0000091000007f00,                  0, 0x8080808080808080),
    1382413855            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1382513856            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13826             /* => */ RTUINT256_INIT_C(                 9,                 10, 0x6db0b4070638d9f7, 0x3c1e9824e85f3497) },
     13857            /* => */ RTUINT256_INIT_C(                 9,                 10, 0x6db0b4070638d9f7, 0x3c1e9824e85f3497),
     13858            /*flgs*/ 0 },
    1382713859        {   /*mask*/ RTUINT256_INIT_C(0x8080808080808080, 0x8080808080808080, 0x8080808080808080, 0x8080808080808080),
    1382813860            /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
    1382913861            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
    13830             /* => */ RTUINT256_INIT_C(                13,                 14, 0x6db0b4070638d9f7, 0x3c1e9824e85f3497) },
     13862            /* => */ RTUINT256_INIT_C(                13,                 14, 0x6db0b4070638d9f7, 0x3c1e9824e85f3497),
     13863            /*flgs*/ 0 },
    1383113864        {   /*mask*/ RTUINT256_INIT_C(0x1234567890abcdef, 0xfedcba0987654321, 0xfedcba0987654321, 0x1234567890abcdef),
    1383213865            /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
    1383313866            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
    13834             /* => */ RTUINT256_INIT_C(                17,                 18, 0xef25e0d150a28cfd, 0xbd9ab3ae2970ef62) },
     13867            /* => */ RTUINT256_INIT_C(                17,                 18, 0xef25e0d150a28cfd, 0xbd9ab3ae2970ef62),
     13868            /*flgs*/ 0 },
    1383513869    };
    1383613870
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