target/hppa: prevent trashing of temporary in trans_mtctl()

nullify_over() calls brcond which destroys all temporaries.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Message-Id: <20190913101714.29019-2-svens@stackframe.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Sven Schnelle 2019-09-13 12:17:13 +02:00 committed by Richard Henderson
parent 85182c96de
commit 4845f01518
1 changed files with 4 additions and 1 deletions

View File

@ -2214,10 +2214,11 @@ static bool trans_mtsp(DisasContext *ctx, arg_mtsp *a)
static bool trans_mtctl(DisasContext *ctx, arg_mtctl *a)
{
unsigned ctl = a->t;
TCGv_reg reg = load_gpr(ctx, a->r);
TCGv_reg reg;
TCGv_reg tmp;
if (ctl == CR_SAR) {
reg = load_gpr(ctx, a->r);
tmp = tcg_temp_new();
tcg_gen_andi_reg(tmp, reg, TARGET_REGISTER_BITS - 1);
save_or_nullify(ctx, cpu_sar, tmp);
@ -2232,6 +2233,8 @@ static bool trans_mtctl(DisasContext *ctx, arg_mtctl *a)
#ifndef CONFIG_USER_ONLY
nullify_over(ctx);
reg = load_gpr(ctx, a->r);
switch (ctl) {
case CR_IT:
gen_helper_write_interval_timer(cpu_env, reg);