VirtualBox

Changeset 60729 in vbox


Ignore:
Timestamp:
Apr 28, 2016 12:53:03 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106917
Message:

bs3-cpu-basic-2: 486 adjustments (kind of weird).

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

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

    r60728 r60729  
    22042204        bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    22052205        if (Bs3MemCmp(pbBufSave, pbExpected, cbIdtr * 2) != 0)
    2206             Bs3TestFailedF("Mismatch (#1): expected %.*Rhxs, got %.*Rhxs\n", cbIdtr*2, pbExpected, cbIdtr*2, pbBufSave);
     2206            Bs3TestFailedF("Mismatch (%s, #1): expected %.*Rhxs, got %.*Rhxs\n",
     2207                           pWorker->pszDesc, cbIdtr*2, pbExpected, cbIdtr*2, pbBufSave);
    22072208    }
    22082209    g_usBs3TestStep++;
     
    22342235        bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    22352236        if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2236             Bs3TestFailedF("Mismatch (#2): expected %.*Rhxs, got %.*Rhxs\n", cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2237            Bs3TestFailedF("Mismatch (%s, #2): expected %.*Rhxs, got %.*Rhxs\n",
     2238                           pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    22372239    }
    22382240    g_usBs3TestStep++;
     
    22592261                    || Bs3MemCmp(&pbBufSave[2], &s_aValues64[i].u64Base, 8) != 0
    22602262                    || !ASMMemIsAllU8(&pbBufSave[10], cbIdtr, bFiller2))
    2261                     Bs3TestFailedF("Mismatch (#2): expected %04RX16:%016RX64, fillers %#x %#x, got %.*Rhxs\n",
    2262                                    s_aValues64[i].cbLimit, s_aValues64[i].u64Base, bFiller1, bFiller2, cbIdtr*2, pbBufSave);
     2263                    Bs3TestFailedF("Mismatch (%s, #2): expected %04RX16:%016RX64, fillers %#x %#x, got %.*Rhxs\n",
     2264                                   pWorker->pszDesc, s_aValues64[i].cbLimit, s_aValues64[i].u64Base,
     2265                                   bFiller1, bFiller2, cbIdtr*2, pbBufSave);
    22632266            }
    22642267            g_usBs3TestStep++;
     
    22842287                        && pbBufSave[2+3] != bTop16BitBase)
    22852288                    || !ASMMemIsAllU8(&pbBufSave[8], cbIdtr, bFiller2))
    2286                     Bs3TestFailedF("Mismatch (#3): loaded %04RX16:%08RX32, fillers %#x %#x%s, %s, got %.*Rhxs\n",
    2287                                    s_aValues32[i].cbLimit, s_aValues32[i].u32Base, bFiller1, bFiller2, f286 ? ", 286" : "",
    2288                                    pWorker->pszDesc, cbIdtr*2, pbBufSave);
     2289                    Bs3TestFailedF("Mismatch (%s,#3): loaded %04RX16:%08RX32, fillers %#x %#x%s, got %.*Rhxs\n",
     2290                                   pWorker->pszDesc, s_aValues32[i].cbLimit, s_aValues32[i].u32Base, bFiller1, bFiller2,
     2291                                   f286 ? ", 286" : "", cbIdtr*2, pbBufSave);
    22892292            }
    22902293            g_usBs3TestStep++;
     
    23102313            bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    23112314            if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2312                 Bs3TestFailedF("Mismatch (#4): expected %.*Rhxs, got %.*Rhxs\n", cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2315                Bs3TestFailedF("Mismatch (%s, #4): expected %.*Rhxs, got %.*Rhxs\n",
     2316                               pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    23132317        }
    23142318        g_usBs3TestStep++;
     
    23552359                    bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    23562360                    if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2357                         Bs3TestFailedF("Mismatch (#5): expected %.*Rhxs, got %.*Rhxs\n",
    2358                                        cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2361                        Bs3TestFailedF("Mismatch (%s, #5): expected %.*Rhxs, got %.*Rhxs\n",
     2362                                       pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    23592363                }
    23602364                else if (pWorker->fSs)
     
    24052409                    bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    24062410                    if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2407                         Bs3TestFailedF("Mismatch (#6): expected %.*Rhxs, got %.*Rhxs\n",
    2408                                        cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2411                        Bs3TestFailedF("Mismatch (%s, #6): expected %.*Rhxs, got %.*Rhxs\n",
     2412                                       pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    24092413                }
    24102414                else if (pWorker->fSs)
     
    24672471                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    24682472                if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr*2) != 0)
    2469                     Bs3TestFailedF("Mismatch (#7): expected %.*Rhxs, got %.*Rhxs\n",
    2470                                    cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2473                    Bs3TestFailedF("Mismatch (%s, #7): expected %.*Rhxs, got %.*Rhxs\n",
     2474                                   pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    24712475            }
    24722476            else
     
    25162520                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    25172521                if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr*2) != 0)
    2518                     Bs3TestFailedF("Mismatch (#8): expected %.*Rhxs, got %.*Rhxs\n",
    2519                                    cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2522                    Bs3TestFailedF("Mismatch (%s, #8): expected %.*Rhxs, got %.*Rhxs\n",
     2523                                   pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    25202524            }
    25212525            else
     
    25422546         * This is kind of interesting here since it the instruction seems to
    25432547         * actually be doing two separate read, just like it's S[IG]DT counterpart.
     2548         *
     2549         * Note! My 486DX4 does a DWORD limit read when the operand size is 32-bit,
     2550         *       that's what f486Weirdness deals with.
    25442551         */
    25452552        if (   !BS3_MODE_IS_RM_OR_V86(bTestMode)
    25462553            && !BS3_MODE_IS_64BIT_CODE(bTestMode))
    25472554        {
    2548             uint16_t cbLimit;
     2555            bool const f486Weirdness = (g_uBs3CpuDetected & BS3CPU_TYPE_MASK) == BS3CPU_80486
     2556                                    && BS3_MODE_IS_32BIT_CODE(bTestMode) == !(pWorker->fFlags & BS3CB2SIDTSGDT_F_OPSIZE);
     2557            uint16_t   cbLimit;
    25492558
    25502559            Bs3GdteTestPage00 = Bs3Gdte_DATA16;
     
    25802589                            bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    25812590                            if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2582                                 Bs3TestFailedF("Mismatch (#9): expected %.*Rhxs, got %.*Rhxs\n",
    2583                                                cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2591                                Bs3TestFailedF("Mismatch (%s, #9): expected %.*Rhxs, got %.*Rhxs\n",
     2592                                               pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    25842593                        }
    25852594                        else
     
    25872596                    }
    25882597                    /* No #GP/#SS on limit, but instead #PF? */
    2589                     else if (off < cbLimit && off >= 0xfff)
     2598                    else if (  !f486Weirdness
     2599                             ? off     < cbLimit && off >= 0xfff
     2600                             : off + 2 < cbLimit && off >= 0xffd)
    25902601                        bs3CpuBasic2_ComparePfCtx(&TrapCtx, &Ctx, 0, uFlatTest + RT_MAX(off, X86_PAGE_SIZE));
    25912602                    /* #GP/#SS on limit or base. */
     
    26372648                        bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    26382649                        if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2639                             Bs3TestFailedF("Mismatch (#10): expected %.*Rhxs, got %.*Rhxs\n",
    2640                                            cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2650                            Bs3TestFailedF("Mismatch (%s, #10): expected %.*Rhxs, got %.*Rhxs\n",
     2651                                           pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    26412652                    }
    26422653                    else if (cbLimit < off && off < X86_PAGE_SIZE)
     
    26802691                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    26812692                if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2682                     Bs3TestFailedF("Mismatch (#18): expected %.*Rhxs, got %.*Rhxs\n",
    2683                                    cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2693                    Bs3TestFailedF("Mismatch (%s, #11): expected %.*Rhxs, got %.*Rhxs\n",
     2694                                   pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    26842695            }
    26852696        }
     
    26992710                bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected);
    27002711                if (Bs3MemCmp(pbBufSave, abExpectedFilled, cbIdtr * 2) != 0)
    2701                     Bs3TestFailedF("Mismatch (#19): expected %.*Rhxs, got %.*Rhxs\n",
    2702                                    cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
     2712                    Bs3TestFailedF("Mismatch (%s, #19): expected %.*Rhxs, got %.*Rhxs\n",
     2713                                   pWorker->pszDesc, cbIdtr*2, abExpectedFilled, cbIdtr*2, pbBufSave);
    27032714            }
    27042715        }
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2.c

    r60728 r60729  
    5454    //BS3TESTMODEENTRY_CMN("iret", bs3CpuBasic2_iret),
    5555//    BS3TESTMODEENTRY_MODE("iret", bs3CpuBasic2_iret),
    56 #if 0
     56#if 1
    5757    BS3TESTMODEENTRY_MODE("raise xcpt #1", bs3CpuBasic2_RaiseXcpt1),
    5858    BS3TESTMODEENTRY_MODE("sidt", bs3CpuBasic2_sidt),
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette