]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
target/m68k: Fix stack frame for EXCP_ILLEGAL
authorRichard Henderson <richard.henderson@linaro.org>
Thu, 2 Jun 2022 01:33:53 +0000 (18:33 -0700)
committerLaurent Vivier <laurent@vivier.eu>
Thu, 2 Jun 2022 07:35:02 +0000 (09:35 +0200)
According to the M68040 Users Manual, section 8.4.1, Four word
stack frame (format 0), includes Illegal Instruction.  Use the
correct frame format, which does not use the ADDR argument.

Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220602013401.303699-10-richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
target/m68k/op_helper.c

index 3cb71c914003aa777f0c7add3fb7db041c90ab11..aa62158eb97be5390308497d537afe6c2ec3ab83 100644 (file)
@@ -391,11 +391,14 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
         }
         break;
 
+    case EXCP_ILLEGAL:
+        do_stack_frame(env, &sp, 0, oldsr, 0, env->pc);
+        break;
+
     case EXCP_ADDRESS:
         do_stack_frame(env, &sp, 2, oldsr, 0, env->pc);
         break;
 
-    case EXCP_ILLEGAL:
     case EXCP_TRAPCC:
         /* FIXME: addr is not only env->pc */
         do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc);