aboutsummaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorAnthony Liguori <aliguori@us.ibm.com>2011-06-27 11:25:23 -0500
committerAnthony Liguori <aliguori@us.ibm.com>2011-06-27 11:25:23 -0500
commitbb820c03e2d638038fd48f42ee71e4004e55aba8 (patch)
tree43266acaef2a63fcd06de565a42c264a4f71e95f /exec.c
parent2fb0c09f4ff036f68474277ed4edc036f6529de8 (diff)
parent20fa53ece42bec6ce5db801bead125277b26ab8a (diff)
downloadqemu-bb820c03e2d638038fd48f42ee71e4004e55aba8.zip
qemu-bb820c03e2d638038fd48f42ee71e4004e55aba8.tar.gz
qemu-bb820c03e2d638038fd48f42ee71e4004e55aba8.tar.bz2
Merge remote-tracking branch 'stefanha/trivial-patches' into staging
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/exec.c b/exec.c
index 21507fb..4c45299 100644
--- a/exec.c
+++ b/exec.c
@@ -1207,12 +1207,16 @@ static inline void tb_alloc_page(TranslationBlock *tb,
unsigned int n, tb_page_addr_t page_addr)
{
PageDesc *p;
- TranslationBlock *last_first_tb;
+#ifndef CONFIG_USER_ONLY
+ bool page_already_protected;
+#endif
tb->page_addr[n] = page_addr;
p = page_find_alloc(page_addr >> TARGET_PAGE_BITS, 1);
tb->page_next[n] = p->first_tb;
- last_first_tb = p->first_tb;
+#ifndef CONFIG_USER_ONLY
+ page_already_protected = p->first_tb != NULL;
+#endif
p->first_tb = (TranslationBlock *)((long)tb | n);
invalidate_page_bitmap(p);
@@ -1248,7 +1252,7 @@ static inline void tb_alloc_page(TranslationBlock *tb,
/* if some code is already present, then the pages are already
protected. So we handle the case where only the first TB is
allocated in a physical page */
- if (!last_first_tb) {
+ if (!page_already_protected) {
tlb_protect_code(page_addr);
}
#endif