mirror of https://github.com/xemu-project/xemu.git
target-arm: implement Thumb-2 exception return
Support the "subs pc, lr" Thumb-2 exception return instruction. Signed-off-by: Rabin Vincent <rabin@rab.in> Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
parent
fa26df032e
commit
b8b45b68f8
|
@ -8001,8 +8001,16 @@ static int disas_thumb2_insn(CPUState *env, DisasContext *s, uint16_t insn_hw1)
|
||||||
gen_bx(s, tmp);
|
gen_bx(s, tmp);
|
||||||
break;
|
break;
|
||||||
case 5: /* Exception return. */
|
case 5: /* Exception return. */
|
||||||
/* Unpredictable in user mode. */
|
if (IS_USER(s)) {
|
||||||
goto illegal_op;
|
goto illegal_op;
|
||||||
|
}
|
||||||
|
if (rn != 14 || rd != 15) {
|
||||||
|
goto illegal_op;
|
||||||
|
}
|
||||||
|
tmp = load_reg(s, rn);
|
||||||
|
tcg_gen_subi_i32(tmp, tmp, insn & 0xff);
|
||||||
|
gen_exception_return(s, tmp);
|
||||||
|
break;
|
||||||
case 6: /* mrs cpsr. */
|
case 6: /* mrs cpsr. */
|
||||||
tmp = new_tmp();
|
tmp = new_tmp();
|
||||||
if (IS_M(env)) {
|
if (IS_M(env)) {
|
||||||
|
|
Loading…
Reference in New Issue