target/avr: Avoid use of tcg_const_i32 in SBIC, SBIS
The use of separate data/port variables is existing practice elsewhere, e.g. SBI, CBI. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
00da6b49a2
commit
353c18dc02
|
@ -1288,12 +1288,13 @@ static bool trans_SBRS(DisasContext *ctx, arg_SBRS *a)
|
||||||
*/
|
*/
|
||||||
static bool trans_SBIC(DisasContext *ctx, arg_SBIC *a)
|
static bool trans_SBIC(DisasContext *ctx, arg_SBIC *a)
|
||||||
{
|
{
|
||||||
TCGv temp = tcg_const_i32(a->reg);
|
TCGv data = tcg_temp_new_i32();
|
||||||
|
TCGv port = tcg_constant_i32(a->reg);
|
||||||
|
|
||||||
gen_helper_inb(temp, cpu_env, temp);
|
gen_helper_inb(data, cpu_env, port);
|
||||||
tcg_gen_andi_tl(temp, temp, 1 << a->bit);
|
tcg_gen_andi_tl(data, data, 1 << a->bit);
|
||||||
ctx->skip_cond = TCG_COND_EQ;
|
ctx->skip_cond = TCG_COND_EQ;
|
||||||
ctx->skip_var0 = temp;
|
ctx->skip_var0 = data;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1305,12 +1306,13 @@ static bool trans_SBIC(DisasContext *ctx, arg_SBIC *a)
|
||||||
*/
|
*/
|
||||||
static bool trans_SBIS(DisasContext *ctx, arg_SBIS *a)
|
static bool trans_SBIS(DisasContext *ctx, arg_SBIS *a)
|
||||||
{
|
{
|
||||||
TCGv temp = tcg_const_i32(a->reg);
|
TCGv data = tcg_temp_new_i32();
|
||||||
|
TCGv port = tcg_constant_i32(a->reg);
|
||||||
|
|
||||||
gen_helper_inb(temp, cpu_env, temp);
|
gen_helper_inb(data, cpu_env, port);
|
||||||
tcg_gen_andi_tl(temp, temp, 1 << a->bit);
|
tcg_gen_andi_tl(data, data, 1 << a->bit);
|
||||||
ctx->skip_cond = TCG_COND_NE;
|
ctx->skip_cond = TCG_COND_NE;
|
||||||
ctx->skip_var0 = temp;
|
ctx->skip_var0 = data;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue