diff --git a/cpu-i386.h b/cpu-i386.h index dae88fba6747d8793a361ad9391884875d3667dc..e5bbf45a8b0a3ae48db8cfefbdf26d45c2b44d34 100644 --- a/cpu-i386.h +++ b/cpu-i386.h @@ -440,6 +440,7 @@ void cpu_x86_dump_state(CPUX86State *env, FILE *f, int flags); #define GEN_FLAG_ST_SHIFT 4 #define GEN_FLAG_CPL_SHIFT 7 #define GEN_FLAG_IOPL_SHIFT 9 +#define GEN_FLAG_TF_SHIFT 11 int cpu_x86_gen_code(uint8_t *gen_code_buf, int max_code_size, int *gen_code_size_ptr, diff --git a/exec-i386.c b/exec-i386.c index 10a10d7e6b1fec1b589d9350a8ce2cfc161317d4..5b90305058dce735598fe93d404f23e698ad4d7f 100644 --- a/exec-i386.c +++ b/exec-i386.c @@ -371,6 +371,7 @@ int cpu_x86_exec(CPUX86State *env1) flags |= (3 << GEN_FLAG_CPL_SHIFT); } flags |= (env->eflags & IOPL_MASK) >> (12 - GEN_FLAG_IOPL_SHIFT); + flags |= (env->eflags & TF_MASK) << (GEN_FLAG_TF_SHIFT - 8); cs_base = env->seg_cache[R_CS].base; pc = cs_base + env->eip; tb = tb_find(&ptb, (unsigned long)pc, (unsigned long)cs_base,