From bfe50e41b42383245790d31d0c12e5f65b3b7dae Mon Sep 17 00:00:00 2001 From: Arisotura Date: Thu, 28 Oct 2021 19:47:26 +0200 Subject: MCR/MRC aren't available in user mode --- src/ARMInterpreter.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/ARMInterpreter.cpp b/src/ARMInterpreter.cpp index 3b8408a..dfcb801 100644 --- a/src/ARMInterpreter.cpp +++ b/src/ARMInterpreter.cpp @@ -196,6 +196,9 @@ void A_MRS(ARM* cpu) void A_MCR(ARM* cpu) { + if ((cpu->CPSR & 0x1F) == 0x10) + return A_UNK(cpu); + u32 cp = (cpu->CurInstr >> 8) & 0xF; //u32 op = (cpu->CurInstr >> 21) & 0x7; u32 cn = (cpu->CurInstr >> 16) & 0xF; @@ -221,6 +224,9 @@ void A_MCR(ARM* cpu) void A_MRC(ARM* cpu) { + if ((cpu->CPSR & 0x1F) == 0x10) + return A_UNK(cpu); + u32 cp = (cpu->CurInstr >> 8) & 0xF; //u32 op = (cpu->CurInstr >> 21) & 0x7; u32 cn = (cpu->CurInstr >> 16) & 0xF; -- cgit v1.2.3