Revision 2be0071f target-ppc/translate.c

b/target-ppc/translate.c
179 179
    RET_EXCP(ctx, EXCP_MTMSR, 0);
180 180
}
181 181

  
182
static inline void RET_CHG_FLOW (DisasContext *ctx)
183
{
184
    gen_op_raise_exception_err(EXCP_MTMSR, 0);
185
    ctx->exception = EXCP_MTMSR;
186
}
187

  
182 188
#define GEN_HANDLER(name, opc1, opc2, opc3, inval, type)                      \
183 189
static void gen_##name (DisasContext *ctx);                                   \
184 190
GEN_OPCODE(name, opc1, opc2, opc3, inval, type);                              \
......
1895 1901
        return;
1896 1902
    }
1897 1903
    gen_op_rfi();
1898
    RET_EXCP(ctx, EXCP_RFI, 0);
1904
    RET_CHG_FLOW(ctx);
1899 1905
#endif
1900 1906
}
1901 1907

  
......
2555 2561
            (msr_se && (ctx.nip < 0x100 ||
2556 2562
                        ctx.nip > 0xF00 ||
2557 2563
                        (ctx.nip & 0xFC) != 0x04) &&
2558
             ctx.exception != EXCP_SYSCALL && ctx.exception != EXCP_RFI &&
2564
             ctx.exception != EXCP_SYSCALL &&
2565
             ctx.exception != EXCP_SYSCALL_USER &&
2559 2566
             ctx.exception != EXCP_TRAP)) {
2560 2567
            RET_EXCP(ctxp, EXCP_TRACE, 0);
2561 2568
        }

Also available in: Unified diff