aboutsummaryrefslogtreecommitdiff
path: root/translate-i386.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-22 17:31:38 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-22 17:31:38 +0000
commit1b6b029e40c4297ce9c27e0f8b8ae177085c990a (patch)
treeffcae72b2e16e395ec983f3718adcf9a981b9a66 /translate-i386.c
parent612384d77146639cebdc9b71c87ee4a94bf44501 (diff)
basic clone() support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@40 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'translate-i386.c')
-rw-r--r--translate-i386.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/translate-i386.c b/translate-i386.c
index 5cbaa813ce..b7a7cdc207 100644
--- a/translate-i386.c
+++ b/translate-i386.c
@@ -1395,6 +1395,10 @@ long disas_insn(DisasContext *s, uint8_t *pc_start)
s->aflag = aflag;
s->dflag = dflag;
+ /* lock generation */
+ if (prefixes & PREFIX_LOCK)
+ gen_op_lock();
+
/* now check op code */
reswitch:
switch(b) {
@@ -3153,8 +3157,12 @@ long disas_insn(DisasContext *s, uint8_t *pc_start)
default:
goto illegal_op;
}
+ /* lock generation */
+ if (s->prefix & PREFIX_LOCK)
+ gen_op_unlock();
return (long)s->pc;
illegal_op:
+ /* XXX: ensure that no lock was generated */
return -1;
}
@@ -3609,6 +3617,7 @@ int cpu_x86_gen_code(uint8_t *gen_code_buf, int max_code_size,
pc += count;
}
fprintf(logfile, "\n");
+ fflush(logfile);
}
#endif
return 0;