On 4/10/23 22:05, Richard Henderson wrote:
> The softmmu tlb uses TCG_REG_TMP[0-2], not any of the normally available
> registers. Now that we handle overlap betwen inputs and helper arguments,
> we can allow any allocatable reg.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
> tcg/riscv/tcg-target-con-set.h | 2 --
> tcg/riscv/tcg-target-con-str.h | 1 -
> tcg/riscv/tcg-target.c.inc | 16 +++-------------
> 3 files changed, 3 insertions(+), 16 deletions(-)
>
> diff --git a/tcg/riscv/tcg-target-con-set.h b/tcg/riscv/tcg-target-con-set.h
> index c11710d117..1a8b8e9f2b 100644
> --- a/tcg/riscv/tcg-target-con-set.h
> +++ b/tcg/riscv/tcg-target-con-set.h
> @@ -10,11 +10,9 @@
> * tcg-target-con-str.h; the constraint combination is inclusive or.
> */
> C_O0_I1(r)
> -C_O0_I2(LZ, L)
> C_O0_I2(rZ, r)
> C_O0_I2(rZ, rZ)
> C_O0_I4(rZ, rZ, rZ, rZ)
> -C_O1_I1(r, L)
> C_O1_I1(r, r)
> C_O1_I2(r, r, ri)
> C_O1_I2(r, r, rI)
> diff --git a/tcg/riscv/tcg-target-con-str.h b/tcg/riscv/tcg-target-con-str.h
> index 8d8afaee53..6f1cfb976c 100644
> --- a/tcg/riscv/tcg-target-con-str.h
> +++ b/tcg/riscv/tcg-target-con-str.h
> @@ -9,7 +9,6 @@
> * REGS(letter, register_mask)
> */
> REGS('r', ALL_GENERAL_REGS)
> -REGS('L', ALL_GENERAL_REGS & ~SOFTMMU_RESERVE_REGS)
>
> /*
> * Define constraint letters for constants:
> diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc
> index 425ea8902e..35f04ddda9 100644
> --- a/tcg/riscv/tcg-target.c.inc
> +++ b/tcg/riscv/tcg-target.c.inc
> @@ -125,17 +125,7 @@ static TCGReg tcg_target_call_oarg_reg(TCGCallReturnKind kind, int slot)
> #define TCG_CT_CONST_N12 0x400
> #define TCG_CT_CONST_M12 0x800
>
> -#define ALL_GENERAL_REGS MAKE_64BIT_MASK(0, 32)
> -/*
> - * For softmmu, we need to avoid conflicts with the first 5
> - * argument registers to call the helper. Some of these are
> - * also used for the tlb lookup.
> - */
> -#ifdef CONFIG_SOFTMMU
> -#define SOFTMMU_RESERVE_REGS MAKE_64BIT_MASK(TCG_REG_A0, 5)
> -#else
> -#define SOFTMMU_RESERVE_REGS 0
> -#endif
> +#define ALL_GENERAL_REGS MAKE_64BIT_MASK(0, 32)
>
> #define sextreg sextract64
>
> @@ -1653,10 +1643,10 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpcode op)
>
> case INDEX_op_qemu_ld_i32:
> case INDEX_op_qemu_ld_i64:
> - return C_O1_I1(r, L);
> + return C_O1_I1(r, r);
> case INDEX_op_qemu_st_i32:
> case INDEX_op_qemu_st_i64:
> - return C_O0_I2(LZ, L);
> + return C_O0_I2(rZ, r);
>
> default:
> g_assert_not_reached();