|
@@ -633,9 +633,10 @@ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
|
|
* Exit the loop and potentially generate a new TB executing the
|
|
* Exit the loop and potentially generate a new TB executing the
|
|
* just the I/O insns. We also limit instrumentation to memory
|
|
* just the I/O insns. We also limit instrumentation to memory
|
|
* operations only (which execute after completion) so we don't
|
|
* operations only (which execute after completion) so we don't
|
|
- * double instrument the instruction.
|
|
|
|
|
|
+ * double instrument the instruction. Also don't let an IRQ sneak
|
|
|
|
+ * in before we execute it.
|
|
*/
|
|
*/
|
|
- cpu->cflags_next_tb = curr_cflags(cpu) | CF_MEMI_ONLY | n;
|
|
|
|
|
|
+ cpu->cflags_next_tb = curr_cflags(cpu) | CF_MEMI_ONLY | CF_NOIRQ | n;
|
|
|
|
|
|
if (qemu_loglevel_mask(CPU_LOG_EXEC)) {
|
|
if (qemu_loglevel_mask(CPU_LOG_EXEC)) {
|
|
vaddr pc = cpu->cc->get_pc(cpu);
|
|
vaddr pc = cpu->cc->get_pc(cpu);
|