--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -6257,7 +6257,7 @@ static target_ulong disas_insn(DisasContext *s,
target_ulong pc_start)
                 tval = (int16_t)insn_get(s, OT_WORD);
             next_eip = s->pc - s->cs_base;
             tval += next_eip;
-            if (s->dflag == 0)
+            if ((s->dflag == 0) && !(s->flags & HF_SMM_MASK))
                 tval &= 0xffff;
             else if(!CODE64(s))
