diff options
Diffstat (limited to 'src/devices/cpu/arm7/arm7ops.cpp')
-rw-r--r-- | src/devices/cpu/arm7/arm7ops.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/devices/cpu/arm7/arm7ops.cpp b/src/devices/cpu/arm7/arm7ops.cpp index 0ad73f96b51..ab5bd9243aa 100644 --- a/src/devices/cpu/arm7/arm7ops.cpp +++ b/src/devices/cpu/arm7/arm7ops.cpp @@ -1564,7 +1564,12 @@ void arm7_cpu_device::arm9ops_1(uint32_t insn) else if ((insn & 0x00ff00f0) == 0x00010000) /* set endianness (SETEND) */ { // unsupported (armv6 onwards only) - arm9ops_undef(insn); + if (m_archRev < 6) arm9ops_undef(insn); + else + { + uint32_t new_cpsr = GET_CPSR & ~(1 << 9); + set_cpsr(new_cpsr | (insn & (1 << 9))); + } R15 += 4; } else @@ -1580,7 +1585,7 @@ void arm7_cpu_device::arm9ops_57(uint32_t insn) if ((insn & 0x0070f000) == 0x0050f000) { // unsupported (armv6 onwards only) - arm9ops_undef(insn); + if(m_archRev < 6) arm9ops_undef(insn); R15 += 4; } else |