diff options
Diffstat (limited to 'src/devices/cpu/arm/arm.cpp')
-rw-r--r-- | src/devices/cpu/arm/arm.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp index 5e8bf859d7d..c2036ab166d 100644 --- a/src/devices/cpu/arm/arm.cpp +++ b/src/devices/cpu/arm/arm.cpp @@ -346,7 +346,7 @@ void arm_cpu_device::execute_run() /* load instruction */ pc = R15; - insn = m_direct->read_dword( pc & ADDRESS_MASK ); + insn = m_pr32( pc & ADDRESS_MASK ); switch (insn >> INSN_COND_SHIFT) { @@ -510,7 +510,14 @@ void arm_cpu_device::execute_set_input(int irqline, int state) void arm_cpu_device::device_start() { m_program = &space(AS_PROGRAM); - m_direct = m_program->direct<0>(); + + if(m_program->endianness() == ENDIANNESS_LITTLE) { + auto cache = m_program->cache<2, 0, ENDIANNESS_LITTLE>(); + m_pr32 = [cache](offs_t address) -> u32 { return cache->read_dword(address); }; + } else { + auto cache = m_program->cache<2, 0, ENDIANNESS_BIG>(); + m_pr32 = [cache](offs_t address) -> u32 { return cache->read_dword(address); }; + } save_item(NAME(m_sArmRegister)); save_item(NAME(m_coproRegister)); |