179 |
RET_EXCP(ctx, EXCP_MTMSR, 0); |
RET_EXCP(ctx, EXCP_MTMSR, 0); |
180 |
} |
} |
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 |
|
|
188 |
#define GEN_HANDLER(name, opc1, opc2, opc3, inval, type) \ |
#define GEN_HANDLER(name, opc1, opc2, opc3, inval, type) \ |
189 |
static void gen_##name (DisasContext *ctx); \ |
static void gen_##name (DisasContext *ctx); \ |
190 |
GEN_OPCODE(name, opc1, opc2, opc3, inval, type); \ |
GEN_OPCODE(name, opc1, opc2, opc3, inval, type); \ |
1901 |
return; |
return; |
1902 |
} |
} |
1903 |
gen_op_rfi(); |
gen_op_rfi(); |
1904 |
RET_EXCP(ctx, EXCP_RFI, 0); |
RET_CHG_FLOW(ctx); |
1905 |
#endif |
#endif |
1906 |
} |
} |
1907 |
|
|
2561 |
(msr_se && (ctx.nip < 0x100 || |
(msr_se && (ctx.nip < 0x100 || |
2562 |
ctx.nip > 0xF00 || |
ctx.nip > 0xF00 || |
2563 |
(ctx.nip & 0xFC) != 0x04) && |
(ctx.nip & 0xFC) != 0x04) && |
2564 |
ctx.exception != EXCP_SYSCALL && ctx.exception != EXCP_RFI && |
ctx.exception != EXCP_SYSCALL && |
2565 |
|
ctx.exception != EXCP_SYSCALL_USER && |
2566 |
ctx.exception != EXCP_TRAP)) { |
ctx.exception != EXCP_TRAP)) { |
2567 |
RET_EXCP(ctxp, EXCP_TRACE, 0); |
RET_EXCP(ctxp, EXCP_TRACE, 0); |
2568 |
} |
} |