summary refs log tree commit diff stats
path: root/include/exec/exec-all.h
diff options
context:
space:
mode:
authorSergey Fedorov <serge.fdrv@gmail.com>2015-06-30 12:35:09 +0300
committerPaolo Bonzini <pbonzini@redhat.com>2015-08-06 12:04:08 +0200
commit02d57ea115b7669f588371c86484a2e8ebc369be (patch)
treea87d850835d5142255f0a48b724b43589e15abf5 /include/exec/exec-all.h
parentaf103c9310b7ab56a2552965d9d1274b0024f27b (diff)
downloadfocaccia-qemu-02d57ea115b7669f588371c86484a2e8ebc369be.tar.gz
focaccia-qemu-02d57ea115b7669f588371c86484a2e8ebc369be.zip
cpu-exec: Do not invalidate original TB in cpu_exec_nocache()
Instead of invalidating an original TB in cpu_exec_nocache()
prematurely, just save a link to it in the temporary generated TB. If
cpu_io_recompile() is raised subsequently from the temporary TB,
invalidate the original one as well. That allows reusing the original TB
each time cpu_exec_nocache() is called to handle expired instruction
counter in icount mode.

Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com>
Message-Id: <1435656909-29116-1-git-send-email-serge.fdrv@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include/exec/exec-all.h')
-rw-r--r--include/exec/exec-all.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
index a6fce04f65..84272253b3 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -155,6 +155,8 @@ struct TranslationBlock {
     void *tc_ptr;    /* pointer to the translated code */
     /* next matching tb for physical address. */
     struct TranslationBlock *phys_hash_next;
+    /* original tb when cflags has CF_NOCACHE */
+    struct TranslationBlock *orig_tb;
     /* first and second physical page containing code. The lower bit
        of the pointer tells the index in page_next[] */
     struct TranslationBlock *page_next[2];