tcg: Drop gen_io_end()
Now we have removed all the uses of gen_io_end() from target frontends, the only callsite is inside gen_tb_start(). Inline the code there, and remove the reference to it from the documentation. While we are inlining the code, switch it to use tcg_constant_i32() so we don't have to manually create and destroy a TCG temporary. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210724134902.7785-3-peter.maydell@linaro.org> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
b5328172a9
commit
f383eb80f6
@ -92,6 +92,3 @@ When the translator is handling an instruction of this kind:
|
|||||||
}
|
}
|
||||||
|
|
||||||
* it must end the TB immediately after this instruction
|
* it must end the TB immediately after this instruction
|
||||||
|
|
||||||
Note that some older front-ends call a "gen_io_end()" function:
|
|
||||||
this is obsolete and should not be used.
|
|
||||||
|
@ -17,22 +17,6 @@ static inline void gen_io_start(void)
|
|||||||
tcg_temp_free_i32(tmp);
|
tcg_temp_free_i32(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* cpu->can_do_io is cleared automatically at the beginning of
|
|
||||||
* each translation block. The cost is minimal and only paid
|
|
||||||
* for -icount, plus it would be very easy to forget doing it
|
|
||||||
* in the translator. Therefore, backends only need to call
|
|
||||||
* gen_io_start.
|
|
||||||
*/
|
|
||||||
static inline void gen_io_end(void)
|
|
||||||
{
|
|
||||||
TCGv_i32 tmp = tcg_const_i32(0);
|
|
||||||
tcg_gen_st_i32(tmp, cpu_env,
|
|
||||||
offsetof(ArchCPU, parent_obj.can_do_io) -
|
|
||||||
offsetof(ArchCPU, env));
|
|
||||||
tcg_temp_free_i32(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void gen_tb_start(const TranslationBlock *tb)
|
static inline void gen_tb_start(const TranslationBlock *tb)
|
||||||
{
|
{
|
||||||
TCGv_i32 count;
|
TCGv_i32 count;
|
||||||
@ -64,7 +48,16 @@ static inline void gen_tb_start(const TranslationBlock *tb)
|
|||||||
tcg_gen_st16_i32(count, cpu_env,
|
tcg_gen_st16_i32(count, cpu_env,
|
||||||
offsetof(ArchCPU, neg.icount_decr.u16.low) -
|
offsetof(ArchCPU, neg.icount_decr.u16.low) -
|
||||||
offsetof(ArchCPU, env));
|
offsetof(ArchCPU, env));
|
||||||
gen_io_end();
|
/*
|
||||||
|
* cpu->can_do_io is cleared automatically here at the beginning of
|
||||||
|
* each translation block. The cost is minimal and only paid for
|
||||||
|
* -icount, plus it would be very easy to forget doing it in the
|
||||||
|
* translator. Doing it here means we don't need a gen_io_end() to
|
||||||
|
* go with gen_io_start().
|
||||||
|
*/
|
||||||
|
tcg_gen_st_i32(tcg_constant_i32(0), cpu_env,
|
||||||
|
offsetof(ArchCPU, parent_obj.can_do_io) -
|
||||||
|
offsetof(ArchCPU, env));
|
||||||
}
|
}
|
||||||
|
|
||||||
tcg_temp_free_i32(count);
|
tcg_temp_free_i32(count);
|
||||||
|
Loading…
Reference in New Issue
Block a user