[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/emulate: Don't assume that addr_size == 32 implies protected mode
>>> On 16.12.16 at 10:55, <george.dunlap@xxxxxxxxxx> wrote: > Callers of x86_emulate() generally define addr_size based on the code > segment. In vm86 mode, the code segment is set by the hardware to be > 16-bits; but it is entirely possible to enable protected mode, set the > CS to 32-bits, and then disable protected mode. (This is commonly > called "unreal mode".) To better match this description I think it would be preferable ... > --- a/xen/arch/x86/x86_emulate/x86_emulate.c > +++ b/xen/arch/x86/x86_emulate/x86_emulate.c > @@ -2149,11 +2149,8 @@ x86_decode( > default: > BUG(); /* Shouldn't be possible. */ > case 2: > - if ( in_realmode(ctxt, ops) || (state->regs->eflags & > EFLG_VM) ) > - break; > - /* fall through */ > case 4: > - if ( modrm_mod != 3 ) > + if ( modrm_mod != 3 || !in_protmode(ctxt, ops) ) > break; ... to keep the EFLAGS.VM in case 2, and check in_realmode() in case 4. Otoh what you have now is the more compact form, resulting in fewer branches ... Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |