summary refs log tree commit diff stats
path: root/exec.c
diff options
context:
space:
mode:
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>2013-11-21 19:06:30 +0100
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>2014-02-11 22:56:43 +1000
commit33bde2e13f36b9331e35b6e531bc06e8567b4f64 (patch)
treeadd1e96c9534d347e3fd606c59efd13fe5d0e505 /exec.c
parent09daed848c3de60b7979eda709dc4bae5195273d (diff)
downloadfocaccia-qemu-33bde2e13f36b9331e35b6e531bc06e8567b4f64.tar.gz
focaccia-qemu-33bde2e13f36b9331e35b6e531bc06e8567b4f64.zip
exec: On AS changes, only flush affected CPU TLBs
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/exec.c b/exec.c
index cd931c1e8e..5e2d1211e7 100644
--- a/exec.c
+++ b/exec.c
@@ -1828,6 +1828,11 @@ static void tcg_commit(MemoryListener *listener)
     CPU_FOREACH(cpu) {
         CPUArchState *env = cpu->env_ptr;
 
+        /* FIXME: Disentangle the cpu.h circular files deps so we can
+           directly get the right CPU from listener.  */
+        if (cpu->tcg_as_listener != listener) {
+            continue;
+        }
         tlb_flush(env, 1);
     }
 }