summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/arm7/arm7ops.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/arm7/arm7ops.cpp')
-rw-r--r--src/devices/cpu/arm7/arm7ops.cpp9
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