tcg/arm: explicitely list clobbered/reserved regs
Instead of writing very compact code, declare all registers that are clobbered or reserved one by one. This makes the code easier to read. Also declare all the 16 registers to TCG, and mark pc as reserved. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
39221a82be
commit
e4a7d5e88c
@ -39,6 +39,7 @@ static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
|
||||
"%r12",
|
||||
"%r13",
|
||||
"%r14",
|
||||
"%pc",
|
||||
};
|
||||
#endif
|
||||
|
||||
@ -1580,15 +1581,19 @@ void tcg_target_init(TCGContext *s)
|
||||
tcg_abort();
|
||||
#endif
|
||||
|
||||
tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0,
|
||||
((2 << TCG_REG_R14) - 1) & ~(1 << TCG_REG_R8));
|
||||
tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffff);
|
||||
tcg_regset_set32(tcg_target_call_clobber_regs, 0,
|
||||
((2 << TCG_REG_R3) - 1) |
|
||||
(1 << TCG_REG_R12) | (1 << TCG_REG_R14));
|
||||
(1 << TCG_REG_R0) |
|
||||
(1 << TCG_REG_R1) |
|
||||
(1 << TCG_REG_R2) |
|
||||
(1 << TCG_REG_R3) |
|
||||
(1 << TCG_REG_R12) |
|
||||
(1 << TCG_REG_R14));
|
||||
|
||||
tcg_regset_clear(s->reserved_regs);
|
||||
tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK);
|
||||
tcg_regset_set_reg(s->reserved_regs, TCG_REG_R8);
|
||||
tcg_regset_set_reg(s->reserved_regs, TCG_REG_PC);
|
||||
|
||||
tcg_add_target_add_op_defs(arm_op_defs);
|
||||
}
|
||||
|
@ -44,9 +44,10 @@ enum {
|
||||
TCG_REG_R12,
|
||||
TCG_REG_R13,
|
||||
TCG_REG_R14,
|
||||
TCG_REG_PC,
|
||||
};
|
||||
|
||||
#define TCG_TARGET_NB_REGS 15
|
||||
#define TCG_TARGET_NB_REGS 16
|
||||
|
||||
#define TCG_CT_CONST_ARM 0x100
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user