RET_EXCP(ctx, EXCP_MTMSR, 0);
}
+static inline void RET_CHG_FLOW (DisasContext *ctx)
+{
+ gen_op_raise_exception_err(EXCP_MTMSR, 0);
+ ctx->exception = EXCP_MTMSR;
+}
+
#define GEN_HANDLER(name, opc1, opc2, opc3, inval, type) \
static void gen_##name (DisasContext *ctx); \
GEN_OPCODE(name, opc1, opc2, opc3, inval, type); \
return;
}
gen_op_rfi();
- RET_EXCP(ctx, EXCP_RFI, 0);
+ RET_CHG_FLOW(ctx);
#endif
}
(msr_se && (ctx.nip < 0x100 ||
ctx.nip > 0xF00 ||
(ctx.nip & 0xFC) != 0x04) &&
- ctx.exception != EXCP_SYSCALL && ctx.exception != EXCP_RFI &&
+ ctx.exception != EXCP_SYSCALL &&
+ ctx.exception != EXCP_SYSCALL_USER &&
ctx.exception != EXCP_TRAP)) {
RET_EXCP(ctxp, EXCP_TRACE, 0);
}