Changeset 42807 in vbox for trunk/src/VBox
- Timestamp:
- Aug 14, 2012 1:34:34 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/HWACCM.cpp
r42671 r42807 2335 2335 if (CPUMIsGuestInRealModeEx(pCtx)) 2336 2336 { 2337 /* VT-x will not allow high selector bases in v86 mode; fall 2338 back to the recompiler in that case. 2339 The base must also be equal to (sel << 4). */ 2340 if ( ( pCtx->cs.Sel != (pCtx->cs.u64Base >> 4) 2341 && pCtx->cs.u64Base != 0xffff0000 /* we can deal with the BIOS code as it's also mapped into the lower region. */) 2337 /* In V86 mode (VT-x or not), the CPU enforces real-mode compatible selector 2338 * bases and limits, i.e. limit must be 64K and base must be selector * 16. 2339 * If this is not true, we cannot execute real mode as V86 and have to fall 2340 * back to emulation. 2341 */ 2342 if ( pCtx->cs.Sel != (pCtx->cs.u64Base >> 4) 2343 || pCtx->ds.Sel != (pCtx->ds.u64Base >> 4) 2344 || pCtx->es.Sel != (pCtx->es.u64Base >> 4) 2345 || pCtx->ss.Sel != (pCtx->ss.u64Base >> 4) 2346 || pCtx->fs.Sel != (pCtx->fs.u64Base >> 4) 2347 || pCtx->gs.Sel != (pCtx->gs.u64Base >> 4) 2342 2348 || (pCtx->cs.u32Limit != 0xffff) 2343 2349 || (pCtx->ds.u32Limit != 0xffff) … … 2345 2351 || (pCtx->ss.u32Limit != 0xffff) 2346 2352 || (pCtx->fs.u32Limit != 0xffff) 2347 || (pCtx->gs.u32Limit != 0xffff) 2348 || pCtx->ds.Sel != (pCtx->ds.u64Base >> 4) 2349 || pCtx->es.Sel != (pCtx->es.u64Base >> 4) 2350 || pCtx->fs.Sel != (pCtx->fs.u64Base >> 4) 2351 || pCtx->gs.Sel != (pCtx->gs.u64Base >> 4) 2352 || pCtx->ss.Sel != (pCtx->ss.u64Base >> 4)) 2353 || (pCtx->gs.u32Limit != 0xffff)) 2353 2354 { 2354 2355 return false;
Note:
See TracChangeset
for help on using the changeset viewer.