mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
cpu-exec.c: avoid AREG0 use
Make functions take a parameter for CPUState instead of relying on global env. Pass CPUState pointer to TCG prologue, which moves it to AREG0. Thanks to Peter Maydell and Laurent Desnogues for the ARM prologue change. Revert the hacks to avoid AREG0 use on Sparc hosts. Move cpu_has_work() and cpu_pc_from_tb() from exec.h to cpu.h. Compile the file without HELPER_CFLAGS. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
2b41f10e18
commit
cea5f9a28f
12 changed files with 61 additions and 87 deletions
|
@ -1452,9 +1452,7 @@ static const TCGTargetOpDef mips_op_defs[] = {
|
|||
};
|
||||
|
||||
static int tcg_target_callee_save_regs[] = {
|
||||
#if 0 /* used for the global env (TCG_AREG0), so no need to save */
|
||||
TCG_REG_S0,
|
||||
#endif
|
||||
TCG_REG_S0, /* used for the global env (TCG_AREG0) */
|
||||
TCG_REG_S1,
|
||||
TCG_REG_S2,
|
||||
TCG_REG_S3,
|
||||
|
@ -1486,8 +1484,8 @@ static void tcg_target_qemu_prologue(TCGContext *s)
|
|||
}
|
||||
|
||||
/* Call generated code */
|
||||
tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_A0, 0);
|
||||
tcg_out_nop(s);
|
||||
tcg_out_opc_reg(s, OPC_JR, 0, tcg_target_call_iarg_regs[1]), 0);
|
||||
tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]);
|
||||
tb_ret_addr = s->code_ptr;
|
||||
|
||||
/* TB epilogue */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue