Thanks Peter 在 2023年3月18日,上午12:18,Peter Maydell <peter.maydell@linaro.org> 写道:
On Fri, 17 Mar 2023 at 15:17, 沈梦姣 <shen.mengjiao3@icloud.com> wrote:
Hi,
When generating host code, sometimes it has to jmp to qemu common
code(e.g. memory management code to get host virtual address), but
it seems before the jmp the caller saved registers haven’t been
pushed to stack, qemu common code is function so it can use caller
saved registers.
TCG knows what registers may be clobbered by a call intohost C code (this is set up in the tcg_target_call_clobber_regsregset by code in tcg_target_init()), so the register allocatorwill either avoid using those registers Look at tcg_target_reg_alloc_order in i386 host, it has these clobber registers though it first allocates callee saved registers.
for values that must be preserved across the call, or else it will spill them to memory.
I didn’t see these clobber registers being saved to memory before call/jmp Host C code in i386(x86-64) host, and copy these memory value back to these registers
-- PMM
|