Thanks Peter
> 在 2023年3月18日,上午12:18,Peter Maydell <peter.mayd...@linaro.org> 写道: > > On Fri, 17 Mar 2023 at 15:17, 沈梦姣 <shen.mengji...@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 into > host C code (this is set up in the tcg_target_call_clobber_regs > regset by code in tcg_target_init()), so the register allocator > will 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