From d2e7c9a5df34cd20e0b8b7f864eb040cdabf66d7 Mon Sep 17 00:00:00 2001 From: Maxim Poliakovski Date: Wed, 9 Aug 2023 12:53:48 +0200 Subject: [PATCH] ppcexceptions: fix next address for decrementer exceptions. --- cpu/ppc/ppcexceptions.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cpu/ppc/ppcexceptions.cpp b/cpu/ppc/ppcexceptions.cpp index 892e8b3..cec9632 100644 --- a/cpu/ppc/ppcexceptions.cpp +++ b/cpu/ppc/ppcexceptions.cpp @@ -89,7 +89,11 @@ void ppc_exception_handler(Except_Type exception_type, uint32_t srr1_bits) { break; case Except_Type::EXC_DECR: - ppc_state.spr[SPR::SRR0] = (ppc_state.pc & 0xFFFFFFFC) + 4; + if (exec_flags & ~EXEF_TIMER) { + ppc_state.spr[SPR::SRR0] = ppc_next_instruction_address; + } else { + ppc_state.spr[SPR::SRR0] = (ppc_state.pc & 0xFFFFFFFCUL) + 4; + } ppc_next_instruction_address = 0x0900; break;