Changeset 60729 in vbox
- Timestamp:
- Apr 28, 2016 12:53:03 AM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 106917
- 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 2204 2204 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2205 2205 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); 2207 2208 } 2208 2209 g_usBs3TestStep++; … … 2234 2235 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2235 2236 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); 2237 2239 } 2238 2240 g_usBs3TestStep++; … … 2259 2261 || Bs3MemCmp(&pbBufSave[2], &s_aValues64[i].u64Base, 8) != 0 2260 2262 || !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); 2263 2266 } 2264 2267 g_usBs3TestStep++; … … 2284 2287 && pbBufSave[2+3] != bTop16BitBase) 2285 2288 || !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); 2289 2292 } 2290 2293 g_usBs3TestStep++; … … 2310 2313 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2311 2314 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); 2313 2317 } 2314 2318 g_usBs3TestStep++; … … 2355 2359 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2356 2360 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); 2359 2363 } 2360 2364 else if (pWorker->fSs) … … 2405 2409 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2406 2410 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); 2409 2413 } 2410 2414 else if (pWorker->fSs) … … 2467 2471 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2468 2472 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); 2471 2475 } 2472 2476 else … … 2516 2520 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2517 2521 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); 2520 2524 } 2521 2525 else … … 2542 2546 * This is kind of interesting here since it the instruction seems to 2543 2547 * 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. 2544 2551 */ 2545 2552 if ( !BS3_MODE_IS_RM_OR_V86(bTestMode) 2546 2553 && !BS3_MODE_IS_64BIT_CODE(bTestMode)) 2547 2554 { 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; 2549 2558 2550 2559 Bs3GdteTestPage00 = Bs3Gdte_DATA16; … … 2580 2589 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2581 2590 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); 2584 2593 } 2585 2594 else … … 2587 2596 } 2588 2597 /* 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) 2590 2601 bs3CpuBasic2_ComparePfCtx(&TrapCtx, &Ctx, 0, uFlatTest + RT_MAX(off, X86_PAGE_SIZE)); 2591 2602 /* #GP/#SS on limit or base. */ … … 2637 2648 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2638 2649 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); 2641 2652 } 2642 2653 else if (cbLimit < off && off < X86_PAGE_SIZE) … … 2680 2691 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2681 2692 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); 2684 2695 } 2685 2696 } … … 2699 2710 bs3CpuBasic2_CompareUdCtx(&TrapCtx, &CtxUdExpected); 2700 2711 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); 2703 2714 } 2704 2715 } -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2.c
r60728 r60729 54 54 //BS3TESTMODEENTRY_CMN("iret", bs3CpuBasic2_iret), 55 55 // BS3TESTMODEENTRY_MODE("iret", bs3CpuBasic2_iret), 56 #if 056 #if 1 57 57 BS3TESTMODEENTRY_MODE("raise xcpt #1", bs3CpuBasic2_RaiseXcpt1), 58 58 BS3TESTMODEENTRY_MODE("sidt", bs3CpuBasic2_sidt),
Note:
See TracChangeset
for help on using the changeset viewer.