All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] target/m68k: Handle EXCP_SEMIHOSTING for m68k class CPU
@ 2024-12-29 10:51 Jiaxun Yang
  2024-12-29 15:15 ` BALATON Zoltan
  0 siblings, 1 reply; 6+ messages in thread
From: Jiaxun Yang @ 2024-12-29 10:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Laurent Vivier, Richard Henderson, qemu-stable, Jiaxun Yang

EXCP_SEMIHOSTING can be generated by m68k class CPU with
HALT instruction, but it is never handled properly and cause
guest fall into deadlock.

Moving EXCE_SEMIHOSTING handling code to common do_interrupt_all
routine to ensure it's handled for both CPU classes.

Fixes: f161e723fdfd ("target/m68k: Perform the semihosting test during translate")
Cc: qemu-stable@nongnu.org
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
Changes in v2:
- hoist both calls to do_interrupt_all (Richard)
- Link to v1: https://lore.kernel.org/r/20241229-m68k-semihosting-v1-1-db131e2b5212@flygoat.com
---
 target/m68k/op_helper.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
index 15bad5dd46518c6e86b6273d4a2b26b3b6f991de..9dd76f540b4871d3d0ab0e95747c85434e5d677d 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -202,9 +202,6 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw)
             /* Return from an exception.  */
             cf_rte(env);
             return;
-        case EXCP_SEMIHOSTING:
-            do_m68k_semihosting(env, env->dregs[0]);
-            return;
         }
     }
 
@@ -422,6 +419,15 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
 
 static void do_interrupt_all(CPUM68KState *env, int is_hw)
 {
+    CPUState *cs = env_cpu(env);
+
+    if (!is_hw) {
+        switch (cs->exception_index) {
+        case EXCP_SEMIHOSTING:
+            do_m68k_semihosting(env, env->dregs[0]);
+            return;
+        }
+    }
     if (m68k_feature(env, M68K_FEATURE_M68K)) {
         m68k_interrupt_all(env, is_hw);
         return;

---
base-commit: 2b7a80e07a29074530a0ebc8005a418ee07b1faf
change-id: 20241229-m68k-semihosting-2c49c86d3e3c

Best regards,
-- 
Jiaxun Yang <jiaxun.yang@flygoat.com>



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-12-30  0:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-29 10:51 [PATCH v2] target/m68k: Handle EXCP_SEMIHOSTING for m68k class CPU Jiaxun Yang
2024-12-29 15:15 ` BALATON Zoltan
2024-12-29 15:40   ` Jiaxun Yang
2024-12-29 16:52   ` Alex Bennée
2024-12-29 22:30     ` BALATON Zoltan
2024-12-30  0:10       ` Jiaxun Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.