mirror of
https://github.com/qemu/qemu.git
synced 2024-11-28 06:13:46 +08:00
tcg/tci: Adjust call-clobbered regs for int128_t
We require either 2 or 4 registers to hold int128_t. Failure to do so results in a register allocation assert. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
ab64da7977
commit
0cabaef3ed
@ -179,8 +179,6 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpcode op)
|
||||
}
|
||||
|
||||
static const int tcg_target_reg_alloc_order[] = {
|
||||
TCG_REG_R2,
|
||||
TCG_REG_R3,
|
||||
TCG_REG_R4,
|
||||
TCG_REG_R5,
|
||||
TCG_REG_R6,
|
||||
@ -193,6 +191,9 @@ static const int tcg_target_reg_alloc_order[] = {
|
||||
TCG_REG_R13,
|
||||
TCG_REG_R14,
|
||||
TCG_REG_R15,
|
||||
/* Either 2 or 4 of these are call clobbered, so use them last. */
|
||||
TCG_REG_R3,
|
||||
TCG_REG_R2,
|
||||
TCG_REG_R1,
|
||||
TCG_REG_R0,
|
||||
};
|
||||
@ -934,11 +935,11 @@ static void tcg_target_init(TCGContext *s)
|
||||
/*
|
||||
* The interpreter "registers" are in the local stack frame and
|
||||
* cannot be clobbered by the called helper functions. However,
|
||||
* the interpreter assumes a 64-bit return value and assigns to
|
||||
* the interpreter assumes a 128-bit return value and assigns to
|
||||
* the return value registers.
|
||||
*/
|
||||
tcg_target_call_clobber_regs =
|
||||
MAKE_64BIT_MASK(TCG_REG_R0, 64 / TCG_TARGET_REG_BITS);
|
||||
MAKE_64BIT_MASK(TCG_REG_R0, 128 / TCG_TARGET_REG_BITS);
|
||||
|
||||
s->reserved_regs = 0;
|
||||
tcg_regset_set_reg(s->reserved_regs, TCG_REG_TMP);
|
||||
|
Loading…
Reference in New Issue
Block a user