accel/tcg: Hoist tcg_tb_insert() up above tb_link_page()
TranslationBlocks not inserted into the corresponding region tree shall be regarded as partially initialized objects, and needs to be finalized first before inserting into QHT. Signed-off-by: Liren Wei <lrwei@bupt.edu.cn> Message-Id: <f9fc263f71e11b6308d8c1fbc0dd366bf4aeb532.1625404483.git.lrwei@bupt.edu.cn> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
1797b08d24
commit
f4cba756cb
@ -1657,6 +1657,13 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
|
|||||||
return tb;
|
return tb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Insert TB into the corresponding region tree before publishing it
|
||||||
|
* through QHT. Otherwise rewinding happened in the TB might fail to
|
||||||
|
* lookup itself using host PC.
|
||||||
|
*/
|
||||||
|
tcg_tb_insert(tb);
|
||||||
|
|
||||||
/* check next page if needed */
|
/* check next page if needed */
|
||||||
virt_page2 = (pc + tb->size - 1) & TARGET_PAGE_MASK;
|
virt_page2 = (pc + tb->size - 1) & TARGET_PAGE_MASK;
|
||||||
phys_page2 = -1;
|
phys_page2 = -1;
|
||||||
@ -1675,9 +1682,9 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
|
|||||||
orig_aligned -= ROUND_UP(sizeof(*tb), qemu_icache_linesize);
|
orig_aligned -= ROUND_UP(sizeof(*tb), qemu_icache_linesize);
|
||||||
qatomic_set(&tcg_ctx->code_gen_ptr, (void *)orig_aligned);
|
qatomic_set(&tcg_ctx->code_gen_ptr, (void *)orig_aligned);
|
||||||
tb_destroy(tb);
|
tb_destroy(tb);
|
||||||
|
tcg_tb_remove(tb);
|
||||||
return existing_tb;
|
return existing_tb;
|
||||||
}
|
}
|
||||||
tcg_tb_insert(tb);
|
|
||||||
return tb;
|
return tb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user