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