target-arm: fix thumb CPS

The Thumb CPS currently does not work correctly: CPSID touches more bits
than the instruction wants to, and CPSIE does nothing.  Fix it by
passing the correct mask (the "affect" bits) and value.

Signed-off-by: Rabin Vincent <rabin@rab.in>
This commit is contained in:
Rabin Vincent 2010-02-15 00:02:34 +05:30 committed by Paul Brook
parent 24ebf5f31a
commit fa26df032e

View file

@ -8898,7 +8898,7 @@ static void disas_thumb_insn(CPUState *env, DisasContext *s)
shift = CPSR_A | CPSR_I | CPSR_F;
else
shift = 0;
gen_set_psr_im(s, shift, 0, ((insn & 7) << 6) & shift);
gen_set_psr_im(s, ((insn & 7) << 6), 0, shift);
}
break;