summaryrefslogtreecommitdiffstats
path: root/target-i386/translate.c
diff options
context:
space:
mode:
authorbellard2005-01-06 21:46:58 +0100
committerbellard2005-01-06 21:46:58 +0100
commita8ede8ba8be076ae56b7c9ce9b4f2a115589543a (patch)
tree27891967931c9729b5ec3bc8dd5381d985db5a63 /target-i386/translate.c
parentbig endian SSE fix (diff)
downloadqemu-a8ede8ba8be076ae56b7c9ce9b4f2a115589543a.tar.gz
qemu-a8ede8ba8be076ae56b7c9ce9b4f2a115589543a.tar.xz
qemu-a8ede8ba8be076ae56b7c9ce9b4f2a115589543a.zip
div64 fix - raise_interrupt() fix - SSE fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1202 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-i386/translate.c')
-rw-r--r--target-i386/translate.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/target-i386/translate.c b/target-i386/translate.c
index 743aff7653..686c184f15 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -2119,7 +2119,7 @@ static void gen_interrupt(DisasContext *s, int intno,
if (s->cc_op != CC_OP_DYNAMIC)
gen_op_set_cc_op(s->cc_op);
gen_jmp_im(cur_eip);
- gen_op_raise_interrupt(intno, next_eip);
+ gen_op_raise_interrupt(intno, (int)(next_eip - cur_eip));
s->is_jmp = 3;
}
@@ -4452,7 +4452,8 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start)
goto illegal_op;
if (s->cc_op != CC_OP_DYNAMIC)
gen_op_set_cc_op(s->cc_op);
- gen_op_into(s->pc - s->cs_base);
+ gen_jmp_im(pc_start - s->cs_base);
+ gen_op_into(s->pc - pc_start);
break;
case 0xf1: /* icebp (undocumented, exits to external debugger) */
#if 0
@@ -4826,7 +4827,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start)
/* nothing to do */
}
break;
- case 0x1ae: /* sfence */
+ case 0x1ae:
modrm = ldub_code(s->pc++);
mod = (modrm >> 6) & 3;
op = (modrm >> 3) & 7;