aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Borntraeger <borntraeger@de.ibm.com>2016-08-25 20:11:26 +0200
committerPeter Maydell <peter.maydell@linaro.org>2016-08-30 13:30:55 +0100
commit135a972b45203ba992afc99ef4f061be8a5acae0 (patch)
tree408ac2c0863b51035bc2894b14adab2e2b384164
parentb69a553b4af9bc87a8b2e0a7b7a7de4cc7f0557e (diff)
translate: early exit in tb_flush if there is no tcg
tb_flush does all kind of things, which are very tcg specific. As it is called from some places even for KVM (e.g. gdb server) it is better to detect these cases and do an early exit. This also fixes a crash in the gdb server that was triggered by commit 909eaac9bbc2 ("tb hash: track translated blocks with qht"). Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Reported-by: Richard Henderson <rth@twiddle.net> Reported-by: Brent Baccala <cosine@freesoft.org> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Message-id: 1472148686-39841-1-git-send-email-borntraeger@de.ibm.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--translate-all.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/translate-all.c b/translate-all.c
index efeba298b9..0dd6466e07 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -834,6 +834,9 @@ static void page_flush_tb(void)
/* XXX: tb_flush is currently not thread safe */
void tb_flush(CPUState *cpu)
{
+ if (!tcg_enabled()) {
+ return;
+ }
#if defined(DEBUG_FLUSH)
printf("qemu: flush code_size=%ld nb_tbs=%d avg_tb_size=%ld\n",
(unsigned long)(tcg_ctx.code_gen_ptr - tcg_ctx.code_gen_buffer),