* [PATCH] target/m68k: Raise ColdFire bus access error
[not found] <20261110152728.481267-1-eric_devolder.ref@yahoo.com>
@ 2026-11-10 15:27 ` Eric DeVolder
0 siblings, 0 replies; only message in thread
From: Eric DeVolder @ 2026-11-10 15:27 UTC (permalink / raw)
To: qemu-devel; +Cc: Eric DeVolder
m68k_cpu_transaction_failed() now works for ColdFire
(access error vector 8). Previously it was only 68040.
Signed-off-by: Eric DeVolder <eric_devolder@yahoo.com>
---
target/m68k/op_helper.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
index 65eb69f2b4..580f26a540 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -237,6 +237,9 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw)
fmt |= 0x40000000;
fmt |= vector << 16;
+ if (cs->exception_index == EXCP_ACCESS) {
+ fmt |= (env->mmu.ssw & 0xf) << 24;
+ }
fmt |= sr;
env->sr |= SR_S;
@@ -472,6 +475,18 @@ void m68k_cpu_transaction_failed(CPUState *cs, hwaddr physaddr, vaddr addr,
cpu_restore_state(cs, retaddr);
+ if (m68k_feature(env, M68K_FEATURE_CF_ISA_A)) {
+ if (access_type == MMU_INST_FETCH) {
+ env->mmu.ssw = 0x4;
+ } else if (access_type == MMU_DATA_STORE) {
+ env->mmu.ssw = 0x8;
+ } else {
+ env->mmu.ssw = 0xc;
+ }
+ cs->exception_index = EXCP_ACCESS;
+ cpu_loop_exit(cs);
+ }
+
if (m68k_feature(env, M68K_FEATURE_M68040)) {
env->mmu.mmusr = 0;
--
2.53.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-11-10 15:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20261110152728.481267-1-eric_devolder.ref@yahoo.com>
2026-11-10 15:27 ` [PATCH] target/m68k: Raise ColdFire bus access error Eric DeVolder
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.