On 6/1/24 00:57, niugen wrote:
on 2024/6/1 01:32, Richard Henderson wrote:
On 5/31/24 03:17, NiuGenen wrote:
Signed-off-by: NiuGenen <niu...@loongson.cn>
---
accel/tcg/cpu-exec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 2972f75b96..084fa645c7 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -173,7 +173,7 @@ uint32_t curr_cflags(CPUState *cpu)
} else if (qatomic_read(&one_insn_per_tb)) {
cflags |= CF_NO_GOTO_TB | 1;
} else if (qemu_loglevel_mask(CPU_LOG_TB_NOCHAIN)) {
- cflags |= CF_NO_GOTO_TB;
+ cflags |= CF_NO_GOTO_TB | CF_NO_GOTO_PTR;
}
return cflags;
Why?
The original intent of nochain was so that -d exec would log all blocks, which requires
excluding goto_tb. There is exec logging in helper_lookup_goto_ptr, so there is no need
to avoid goto_ptr.
You must provide a rationale, at minimum.
r~
Sorry, my mistake. I thought nochain will disable all kinds of branches, including direct
branch and indirect branch, but I found that indirect branch still call
helper_lookup_tb_ptr to continue executing TB instead of epilogue-tblookup-prologue.
Maybe the exec logging can be removed from helper_lookup_tb_ptr and nochain can disable
all the chaining of TB?
Why? You still haven't provided a rationale.
r~