OSDN Git Service

exec: On AS changes, only flush affected CPU TLBs
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Thu, 21 Nov 2013 18:06:30 +0000 (19:06 +0100)
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Tue, 11 Feb 2014 12:56:43 +0000 (22:56 +1000)
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
exec.c

diff --git a/exec.c b/exec.c
index cd931c1..5e2d121 100644 (file)
--- 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);
     }
 }