Message ID | 20230109014248.2894281-15-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tcg: exit_tb tidy, goto_tb reorg | expand |
Richard Henderson <richard.henderson@linaro.org> writes: > Install empty versions for !TCG_TARGET_HAS_direct_jump hosts. > > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > tcg/arm/tcg-target.c.inc | 6 ++++++ > tcg/mips/tcg-target.c.inc | 6 ++++++ > tcg/riscv/tcg-target.c.inc | 6 ++++++ > tcg/tci/tcg-target.c.inc | 6 ++++++ > 4 files changed, 24 insertions(+) > > diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc > index b8f3b0c634..b21dd561fa 100644 > --- a/tcg/arm/tcg-target.c.inc > +++ b/tcg/arm/tcg-target.c.inc > @@ -1964,6 +1964,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) > set_jmp_reset_offset(s, which); > } > > +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, > + uintptr_t jmp_rx, uintptr_t jmp_rw) > +{ > + /* Always indirect, nothing to do */ Should we assert and then remove when we fill in because some targets never gain this ability. > +} > + > static void tcg_out_op(TCGContext *s, TCGOpcode opc, > const TCGArg args[TCG_MAX_OP_ARGS], > const int const_args[TCG_MAX_OP_ARGS]) > diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc > index e54df4128b..0b5e100cb1 100644 > --- a/tcg/mips/tcg-target.c.inc > +++ b/tcg/mips/tcg-target.c.inc > @@ -1977,6 +1977,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) > set_jmp_reset_offset(s, which); > } > > +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, > + uintptr_t jmp_rx, uintptr_t jmp_rw) > +{ > + /* Always indirect, nothing to do */ > +} > + > static void tcg_out_op(TCGContext *s, TCGOpcode opc, > const TCGArg args[TCG_MAX_OP_ARGS], > const int const_args[TCG_MAX_OP_ARGS]) > diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc > index ee6759f787..e6a3915859 100644 > --- a/tcg/riscv/tcg-target.c.inc > +++ b/tcg/riscv/tcg-target.c.inc > @@ -1310,6 +1310,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) > set_jmp_reset_offset(s, which); > } > > +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, > + uintptr_t jmp_rx, uintptr_t jmp_rw) > +{ > + /* Always indirect, nothing to do */ > +} > + > static void tcg_out_op(TCGContext *s, TCGOpcode opc, > const TCGArg args[TCG_MAX_OP_ARGS], > const int const_args[TCG_MAX_OP_ARGS]) > diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc > index f2ac356900..54779d86d9 100644 > --- a/tcg/tci/tcg-target.c.inc > +++ b/tcg/tci/tcg-target.c.inc > @@ -603,6 +603,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) > set_jmp_reset_offset(s, which); > } > > +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, > + uintptr_t jmp_rx, uintptr_t jmp_rw) > +{ > + /* Always indirect, nothing to do */ > +} > + > static void tcg_out_op(TCGContext *s, TCGOpcode opc, > const TCGArg args[TCG_MAX_OP_ARGS], > const int const_args[TCG_MAX_OP_ARGS])
On 1/17/23 08:14, Alex Bennée wrote: > > Richard Henderson <richard.henderson@linaro.org> writes: > >> Install empty versions for !TCG_TARGET_HAS_direct_jump hosts. >> >> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> >> --- >> tcg/arm/tcg-target.c.inc | 6 ++++++ >> tcg/mips/tcg-target.c.inc | 6 ++++++ >> tcg/riscv/tcg-target.c.inc | 6 ++++++ >> tcg/tci/tcg-target.c.inc | 6 ++++++ >> 4 files changed, 24 insertions(+) >> >> diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc >> index b8f3b0c634..b21dd561fa 100644 >> --- a/tcg/arm/tcg-target.c.inc >> +++ b/tcg/arm/tcg-target.c.inc >> @@ -1964,6 +1964,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) >> set_jmp_reset_offset(s, which); >> } >> >> +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, >> + uintptr_t jmp_rx, uintptr_t jmp_rw) >> +{ >> + /* Always indirect, nothing to do */ > > Should we assert and then remove when we fill in because some targets > never gain this ability. The very next patch calls this function unconditionally. So, no. r~
diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc index b8f3b0c634..b21dd561fa 100644 --- a/tcg/arm/tcg-target.c.inc +++ b/tcg/arm/tcg-target.c.inc @@ -1964,6 +1964,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) set_jmp_reset_offset(s, which); } +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, + uintptr_t jmp_rx, uintptr_t jmp_rw) +{ + /* Always indirect, nothing to do */ +} + static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg args[TCG_MAX_OP_ARGS], const int const_args[TCG_MAX_OP_ARGS]) diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc index e54df4128b..0b5e100cb1 100644 --- a/tcg/mips/tcg-target.c.inc +++ b/tcg/mips/tcg-target.c.inc @@ -1977,6 +1977,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) set_jmp_reset_offset(s, which); } +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, + uintptr_t jmp_rx, uintptr_t jmp_rw) +{ + /* Always indirect, nothing to do */ +} + static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg args[TCG_MAX_OP_ARGS], const int const_args[TCG_MAX_OP_ARGS]) diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc index ee6759f787..e6a3915859 100644 --- a/tcg/riscv/tcg-target.c.inc +++ b/tcg/riscv/tcg-target.c.inc @@ -1310,6 +1310,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) set_jmp_reset_offset(s, which); } +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, + uintptr_t jmp_rx, uintptr_t jmp_rw) +{ + /* Always indirect, nothing to do */ +} + static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg args[TCG_MAX_OP_ARGS], const int const_args[TCG_MAX_OP_ARGS]) diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index f2ac356900..54779d86d9 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -603,6 +603,12 @@ static void tcg_out_goto_tb(TCGContext *s, int which) set_jmp_reset_offset(s, which); } +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, + uintptr_t jmp_rx, uintptr_t jmp_rw) +{ + /* Always indirect, nothing to do */ +} + static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg args[TCG_MAX_OP_ARGS], const int const_args[TCG_MAX_OP_ARGS])