Changeset 65180 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jan 6, 2017 10:39:45 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r65179 r65180 2456 2456 pCtx->cs.u64Base = u64Base; 2457 2457 pVCpu->iem.s.enmCpuMode = iemCalcCpuMode(pCtx); 2458 pCtx->rsp = uNewOuterRsp;2459 2458 pCtx->ss.Sel = uNewOuterSs; 2460 2459 pCtx->ss.ValidSel = uNewOuterSs; … … 2466 2465 else 2467 2466 pCtx->ss.u64Base = X86DESC_BASE(&DescSs.Legacy); 2467 if (!pCtx->ss.Attr.n.u1DefBig) 2468 pCtx->sp = (uint16_t)uNewOuterRsp; 2469 else 2470 pCtx->rsp = uNewOuterRsp; 2468 2471 2469 2472 pVCpu->iem.s.uCpl = (uNewCs & X86_SEL_RPL); … … 2529 2532 2530 2533 /* commit */ 2531 pCtx->rsp = uNewRsp; 2534 if (!pCtx->ss.Attr.n.u1DefBig) 2535 pCtx->sp = (uint16_t)uNewRsp; 2536 else 2537 pCtx->rsp = uNewRsp; 2532 2538 if (enmEffOpSize == IEMMODE_16BIT) 2533 2539 pCtx->rip = uNewRip & UINT16_MAX; /** @todo Testcase: When exactly does this occur? With call it happens prior to the limit check according to Intel... */ … … 3404 3410 pCtx->cs.u64Base = X86DESC_BASE(&DescCS.Legacy); 3405 3411 pVCpu->iem.s.enmCpuMode = iemCalcCpuMode(pCtx); 3406 if (!pCtx->ss.Attr.n.u1DefBig) 3407 pCtx->sp = (uint16_t)uNewESP; 3408 else 3409 pCtx->rsp = uNewESP; 3412 3410 3413 pCtx->ss.Sel = uNewSS; 3411 3414 pCtx->ss.ValidSel = uNewSS; … … 3414 3417 pCtx->ss.u32Limit = cbLimitSs; 3415 3418 pCtx->ss.u64Base = X86DESC_BASE(&DescSS.Legacy); 3419 if (!pCtx->ss.Attr.n.u1DefBig) 3420 pCtx->sp = (uint16_t)uNewESP; 3421 else 3422 pCtx->rsp = uNewESP; 3416 3423 3417 3424 pVCpu->iem.s.uCpl = uNewCs & X86_SEL_RPL; … … 3477 3484 pCtx->cs.u64Base = X86DESC_BASE(&DescCS.Legacy); 3478 3485 pVCpu->iem.s.enmCpuMode = iemCalcCpuMode(pCtx); 3479 pCtx->rsp = uNewRsp; 3486 if (!pCtx->ss.Attr.n.u1DefBig) 3487 pCtx->sp = (uint16_t)uNewRsp; 3488 else 3489 pCtx->rsp = uNewRsp; 3480 3490 /* Done! */ 3481 3491 }
Note:
See TracChangeset
for help on using the changeset viewer.