Segment limits are verified in real mode, not just protected mode.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
 
        la = seg_base(ctxt, addr.seg) + addr.ea;
        switch (ctxt->mode) {
-       case X86EMUL_MODE_REAL:
-               break;
        case X86EMUL_MODE_PROT64:
                if (((signed long)la << 16) >> 16 != la)
                        return emulate_gp(ctxt, 0);
                                goto bad;
                }
                cpl = ctxt->ops->cpl(ctxt);
-               rpl = sel & 3;
+               if (ctxt->mode == X86EMUL_MODE_REAL)
+                       rpl = 0;
+               else
+                       rpl = sel & 3;
                cpl = max(cpl, rpl);
                if (!(desc.type & 8)) {
                        /* data segment */