mirror of https://github.com/xemu-project/xemu.git
tcg/arm: don't save/restore r7 in prologue/epilogue
There is no need to save r7, it is used to store the address of the env structure and is not modified by GCC. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
26c5d372e4
commit
9e97d8e941
|
@ -1676,15 +1676,15 @@ static inline void tcg_out_movi(TCGContext *s, TCGType type,
|
||||||
|
|
||||||
void tcg_target_qemu_prologue(TCGContext *s)
|
void tcg_target_qemu_prologue(TCGContext *s)
|
||||||
{
|
{
|
||||||
/* Theoretically there is no need to save r12, but an
|
/* There is no need to save r7, it is used to store the address
|
||||||
even number of registers to be saved as per EABI */
|
of the env structure and is not modified by GCC. */
|
||||||
|
|
||||||
/* stmdb sp!, { r4 - r12, lr } */
|
/* stmdb sp!, { r4 - r6, r8 - r11, lr } */
|
||||||
tcg_out32(s, (COND_AL << 28) | 0x092d5ff0);
|
tcg_out32(s, (COND_AL << 28) | 0x092d4f70);
|
||||||
|
|
||||||
tcg_out_bx(s, COND_AL, TCG_REG_R0);
|
tcg_out_bx(s, COND_AL, TCG_REG_R0);
|
||||||
tb_ret_addr = s->code_ptr;
|
tb_ret_addr = s->code_ptr;
|
||||||
|
|
||||||
/* ldmia sp!, { r4 - r12, pc } */
|
/* ldmia sp!, { r4 - r6, r8 - r11, pc } */
|
||||||
tcg_out32(s, (COND_AL << 28) | 0x08bd9ff0);
|
tcg_out32(s, (COND_AL << 28) | 0x08bd8f70);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue