diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-03-22 17:31:38 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-03-22 17:31:38 +0000 |
commit | 1b6b029e40c4297ce9c27e0f8b8ae177085c990a (patch) | |
tree | ffcae72b2e16e395ec983f3718adcf9a981b9a66 /translate-i386.c | |
parent | 612384d77146639cebdc9b71c87ee4a94bf44501 (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.c | 9 |
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; |