|
@@ -552,11 +552,11 @@ static inline void cpu_loop_exec_tb(CPUState *cpu, TranslationBlock *tb,
|
|
|
* have set something else (eg exit_request or
|
|
|
* interrupt_request) which we will handle
|
|
|
* next time around the loop. But we need to
|
|
|
- * ensure the tcg_exit_req read in generated code
|
|
|
+ * ensure the zeroing of tcg_exit_req (see cpu_tb_exec)
|
|
|
* comes before the next read of cpu->exit_request
|
|
|
* or cpu->interrupt_request.
|
|
|
*/
|
|
|
- smp_rmb();
|
|
|
+ smp_mb();
|
|
|
*last_tb = NULL;
|
|
|
break;
|
|
|
case TB_EXIT_ICOUNT_EXPIRED:
|