]> Git Repo - qemu.git/blobdiff - cpu-exec.c
vmstate: Define VARRAY with VMS_ALLOC
[qemu.git] / cpu-exec.c
index 602d0c4d0cc850ddaab79394d065a405bc8582aa..f7c642f4a9135e05a89c07be85248474421699f0 100644 (file)
@@ -345,6 +345,15 @@ static inline TranslationBlock *tb_find_fast(CPUState *cpu,
         *last_tb = NULL;
         cpu->tb_flushed = false;
     }
+#ifndef CONFIG_USER_ONLY
+    /* We don't take care of direct jumps when address mapping changes in
+     * system emulation. So it's not safe to make a direct jump to a TB
+     * spanning two pages because the mapping for the second page can change.
+     */
+    if (tb->page_addr[1] != -1) {
+        *last_tb = NULL;
+    }
+#endif
     /* See if we can patch the calling TB. */
     if (*last_tb && !qemu_loglevel_mask(CPU_LOG_TB_NOCHAIN)) {
         tb_add_jump(*last_tb, tb_exit, tb);
This page took 0.023925 seconds and 4 git commands to generate.