Loading cpu-exec.c +5 −1 Original line number Diff line number Diff line Loading @@ -507,8 +507,12 @@ int cpu_exec(CPUState *cpu) * loop. Whatever requested the exit will also * have set something else (eg exit_request or * interrupt_request) which we will handle * next time around the loop. * next time around the loop. But we need to * ensure the tcg_exit_req read in generated code * comes before the next read of cpu->exit_request * or cpu->interrupt_request. */ smp_rmb(); next_tb = 0; break; case TB_EXIT_ICOUNT_EXPIRED: Loading qom/cpu.c +2 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,8 @@ void cpu_reset_interrupt(CPUState *cpu, int mask) void cpu_exit(CPUState *cpu) { cpu->exit_request = 1; /* Ensure cpu_exec will see the exit request after TCG has exited. */ smp_wmb(); cpu->tcg_exit_req = 1; } Loading Loading
cpu-exec.c +5 −1 Original line number Diff line number Diff line Loading @@ -507,8 +507,12 @@ int cpu_exec(CPUState *cpu) * loop. Whatever requested the exit will also * have set something else (eg exit_request or * interrupt_request) which we will handle * next time around the loop. * next time around the loop. But we need to * ensure the tcg_exit_req read in generated code * comes before the next read of cpu->exit_request * or cpu->interrupt_request. */ smp_rmb(); next_tb = 0; break; case TB_EXIT_ICOUNT_EXPIRED: Loading
qom/cpu.c +2 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,8 @@ void cpu_reset_interrupt(CPUState *cpu, int mask) void cpu_exit(CPUState *cpu) { cpu->exit_request = 1; /* Ensure cpu_exec will see the exit request after TCG has exited. */ smp_wmb(); cpu->tcg_exit_req = 1; } Loading