提交 b9f8e55b 编写于 作者: L Laurent Vivier

target/m68k: use EXCP_ILLEGAL instead of EXCP_UNSUPPORTED

Coldfire defines an "Unsupported instruction" exception if execution
of a valid instruction is attempted but the required hardware is not
present in the processor.

We use it with instructions that are in fact undefined or illegal,
and the exception expected in this case by the kernel is the
illegal exception, so this patch fixes that.
Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
Message-Id: <20181030165554.5761-1-laurent@vivier.eu>
上级 7d51a855
......@@ -55,7 +55,6 @@ void cpu_loop(CPUM68KState *env)
break;
case EXCP_LINEA:
case EXCP_LINEF:
case EXCP_UNSUPPORTED:
do_sigill:
info.si_signo = TARGET_SIGILL;
info.si_errno = 0;
......
......@@ -70,7 +70,6 @@
#define EXCP_MMU_CONF 56 /* MMU Configuration Error */
#define EXCP_MMU_ILLEGAL 57 /* MMU Illegal Operation Error */
#define EXCP_MMU_ACCESS 58 /* MMU Access Level Violation Error */
#define EXCP_UNSUPPORTED 61
#define EXCP_RTE 0x100
#define EXCP_HALT_INSN 0x101
......
......@@ -1553,7 +1553,7 @@ DISAS_INSN(undef)
but actually illegal for CPU32 or pre-68020. */
qemu_log_mask(LOG_UNIMP, "Illegal instruction: %04x @ %08x\n",
insn, s->base.pc_next);
gen_exception(s, s->base.pc_next, EXCP_UNSUPPORTED);
gen_exception(s, s->base.pc_next, EXCP_ILLEGAL);
}
DISAS_INSN(mulw)
......@@ -2800,7 +2800,7 @@ DISAS_INSN(mull)
if (ext & 0x400) {
if (!m68k_feature(s->env, M68K_FEATURE_QUAD_MULDIV)) {
gen_exception(s, s->base.pc_next, EXCP_UNSUPPORTED);
gen_exception(s, s->base.pc_next, EXCP_ILLEGAL);
return;
}
......@@ -4510,7 +4510,7 @@ DISAS_INSN(strldsr)
addr = s->pc - 2;
ext = read_im16(env, s);
if (ext != 0x46FC) {
gen_exception(s, addr, EXCP_UNSUPPORTED);
gen_exception(s, addr, EXCP_ILLEGAL);
return;
}
ext = read_im16(env, s);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册