Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> --- accel/stubs/tcg-stub.c | 3 +++ accel/tcg/translate-all.c | 7 +++++++ include/exec/exec-all.h | 1 + 3 files changed, 11 insertions(+)
diff --git a/accel/stubs/tcg-stub.c b/accel/stubs/tcg-stub.c index 5dd480b1a2..5226c4a8a4 100644 --- a/accel/stubs/tcg-stub.c +++ b/accel/stubs/tcg-stub.c @@ -20,3 +20,6 @@ void tb_flush(CPUState *cpu) { } +void tb_flush_sync(CPUState *cpu) +{ +} diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c index 2d1ed06065..a334ac4ccb 100644 --- a/accel/tcg/translate-all.c +++ b/accel/tcg/translate-all.c @@ -929,6 +929,13 @@ done: tb_unlock(); } +void tb_flush_sync(CPUState *cpu) +{ + unsigned tb_flush_count = atomic_mb_read(&tcg_ctx.tb_ctx.tb_flush_count); + assert(cpu == current_cpu); + do_tb_flush(cpu, RUN_ON_CPU_HOST_INT(tb_flush_count)); +} + void tb_flush(CPUState *cpu) { if (tcg_enabled()) { diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 673fc066d0..3f38186a5e 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -358,6 +358,7 @@ struct TranslationBlock { void tb_free(TranslationBlock *tb); void tb_flush(CPUState *cpu); +void tb_flush_sync(CPUState *cpu); void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr); TranslationBlock *tb_htable_lookup(CPUState *cpu, target_ulong pc, target_ulong cs_base, uint32_t flags);