Changeset 45485 in vbox for trunk/src/recompiler/target-i386
- Timestamp:
- Apr 11, 2013 2:46:04 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/target-i386/op_helper.c
r45276 r45485 232 232 #ifdef VBOX 233 233 /* Trying to load a selector with CPL=1? */ 234 /* @todo this is a hack to correct the incorrect checking order for pending interrupts in the patm iret replacement code (corrected in the ring-1 version) */235 /* @todo in theory the iret could fault and we'd still need this. */234 /** @todo this is a hack to correct the incorrect checking order for pending interrupts in the patm iret replacement code (corrected in the ring-1 version) */ 235 /** @todo in theory the iret could fault and we'd still need this. */ 236 236 if ((env->hflags & HF_CPL_MASK) == 0 && (selector & 3) == 1 && (env->state & CPU_RAW_RING0) && !EMIsRawRing1Enabled(env->pVM)) 237 237 { … … 2561 2561 (RTGCPTR)env->eip, (RTSEL)env->tr.selector, (RTGCPTR)env->tr.base, (RTGCPTR)env->tr.limit, 2562 2562 env->tr.flags, (RTSEL)(selector & 0xffff))); 2563 # if 0 /** @todo r=bird: This looks very fishy, need good reason to re-enable it. */ 2563 2564 ASMAtomicOrS32((int32_t volatile *)&env->interrupt_request, 2564 2565 CPU_INTERRUPT_EXTERNAL_EXIT); 2566 # endif 2565 2567 #endif 2566 2568 selector &= 0xffff; … … 3186 3188 if ((new_cs & 0x3) == 1 && (env->state & CPU_RAW_RING0)) 3187 3189 { 3188 # ifdef VBOX_WITH_RAW_RING13189 3190 if ( !EMIsRawRing1Enabled(env->pVM) 3190 3191 || env->segs[R_CS].selector == (new_cs & 0xfffc)) … … 3198 3199 Log(("Genuine switch to ring-1 (iret)\n")); 3199 3200 } 3200 # else 3201 Log(("RPL 1 -> new_cs %04X -> %04X\n", new_cs, new_cs & 0xfffc)); 3202 new_cs = new_cs & 0xfffc; 3203 # endif 3204 } 3205 # ifdef VBOX_WITH_RAW_RING1 3206 else 3207 if ((new_cs & 0x3) == 2 && (env->state & CPU_RAW_RING0) && EMIsRawRing1Enabled(env->pVM)) 3201 } 3202 else if ((new_cs & 0x3) == 2 && (env->state & CPU_RAW_RING0) && EMIsRawRing1Enabled(env->pVM)) 3208 3203 { 3209 3204 Log(("RPL 2 -> new_cs %04X -> %04X\n", new_cs, (new_cs & 0xfffc) | 1)); 3210 3205 new_cs = (new_cs & 0xfffc) | 1; 3211 3206 } 3212 # endif3213 3207 #endif 3214 3208 } else {
Note:
See TracChangeset
for help on using the changeset viewer.