diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-07-02 22:09:27 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-07-02 22:09:27 +0000 |
commit | 2be0071f22f5719eb5e2800f070547227ba37e5a (patch) | |
tree | 099300f6f83480d280a2b2b10846cd245a45c816 /target-ppc/op.c | |
parent | f68c781c2d08fec54ae460749b76b422c2a1921f (diff) |
simplified PowerPC exception handling (Jocelyn Mayer)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1492 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/op.c')
-rw-r--r-- | target-ppc/op.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/target-ppc/op.c b/target-ppc/op.c index 38ed13aa13..c7953662be 100644 --- a/target-ppc/op.c +++ b/target-ppc/op.c @@ -204,16 +204,6 @@ PPC_OP(update_nip) env->nip = PARAM(1); } -PPC_OP(debug) -{ - env->nip = PARAM(1); -#if defined (DEBUG_OP) - dump_state(); -#endif - do_raise_exception(EXCP_DEBUG); - RETURN(); -} - /* Segment registers load and store with immediate index */ PPC_OP(load_srin) { @@ -1384,14 +1374,10 @@ PPC_OP(check_reservation) /* Return from interrupt */ PPC_OP(rfi) { - regs->nip = regs->spr[SPR_SRR0] & ~0x00000003; -#if 1 // TRY - T0 = regs->spr[SPR_SRR1] & ~0xFFF00000; -#else - T0 = regs->spr[SPR_SRR1] & ~0xFFFF0000; -#endif + env->nip = env->spr[SPR_SRR0] & ~0x00000003; + T0 = env->spr[SPR_SRR1] & ~0xFFFF0000UL; do_store_msr(env, T0); - do_raise_exception(EXCP_RFI); + env->interrupt_request |= CPU_INTERRUPT_EXITTB; RETURN(); } |