Hello,
I'm posting this here instead of opening an issue as it is not clear to me if this is a bug or not.
The issue is located in function "cpu_compute_eflags" in target/i386/cpu.h
This function is exectued in an out of cpu loop context.
It is used to synchronize TCG internal eflags registers (CC_OP, CC_SRC, etc...) with the CPU eflags field upon loop exit.
It does:
eflags |= cpu_cc_compute_all(env, CC_OP) | (env->df & DF_MASK);
Shouldn't it be:
eflags = cpu_cc_compute_all(env, CC_OP) | (env->df & DF_MASK);
as eflags is entirely reevaluated by "cpu_cc_compute_all" ?
Thanks,
Kind regards,
Stevie