mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
tcg: Optimize qemu_ld/st by generating slow paths at the end of a block
Add optimized TCG qemu_ld/st generation which locates the code of TLB miss cases at the end of a block after generating the other IRs. Currently, this optimization supports only i386 and x86_64 hosts. Signed-off-by: Yeongkyoon Lee <yeongkyoon.lee@samsung.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
fdbb84d133
commit
b76f0d8c2e
3 changed files with 338 additions and 144 deletions
12
tcg/tcg.c
12
tcg/tcg.c
|
@ -299,6 +299,14 @@ void tcg_func_start(TCGContext *s)
|
|||
|
||||
gen_opc_ptr = gen_opc_buf;
|
||||
gen_opparam_ptr = gen_opparam_buf;
|
||||
|
||||
#if defined(CONFIG_QEMU_LDST_OPTIMIZATION) && defined(CONFIG_SOFTMMU)
|
||||
/* Initialize qemu_ld/st labels to assist code generation at the end of TB
|
||||
for TLB miss cases at the end of TB */
|
||||
s->qemu_ldst_labels = tcg_malloc(sizeof(TCGLabelQemuLdst) *
|
||||
TCG_MAX_QEMU_LDST);
|
||||
s->nb_qemu_ldst_labels = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void tcg_temp_alloc(TCGContext *s, int n)
|
||||
|
@ -2314,6 +2322,10 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
|
|||
#endif
|
||||
}
|
||||
the_end:
|
||||
#if defined(CONFIG_QEMU_LDST_OPTIMIZATION) && defined(CONFIG_SOFTMMU)
|
||||
/* Generate TB finalization at the end of block */
|
||||
tcg_out_tb_finalize(s);
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue