summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/powerpc')
-rw-r--r--src/devices/cpu/powerpc/ppc.h2
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp18
2 files changed, 11 insertions, 9 deletions
diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index 8714fb570aa..8b935f4e58f 100644
--- a/src/devices/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
@@ -292,6 +292,8 @@ protected:
address_space_config m_program_config;
address_space *m_program;
+ memory_access<32, 2, 0, ENDIANNESS_BIG>::cache m_cache32;
+ memory_access<32, 3, 0, ENDIANNESS_BIG>::cache m_cache64;
uint32_t c_bus_frequency;
struct internal_ppc_state
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index aaf40f8acac..9624afe4c23 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -722,24 +722,24 @@ void ppc_device::device_start()
m_program = &space(AS_PROGRAM);
if(m_cap & PPCCAP_4XX)
{
- auto cache = m_program->cache<2, 0, ENDIANNESS_BIG>();
- m_pr32 = [cache](offs_t address) -> u32 { return cache->read_dword(address); };
- m_prptr = [cache](offs_t address) -> const void * { return cache->read_ptr(address); };
+ m_program->cache(m_cache32);
+ m_pr32 = [this](offs_t address) -> u32 { return m_cache32.read_dword(address); };
+ m_prptr = [this](offs_t address) -> const void * { return m_cache32.read_ptr(address); };
}
else
{
- auto cache = m_program->cache<3, 0, ENDIANNESS_BIG>();
- m_pr32 = [cache](offs_t address) -> u32 { return cache->read_dword(address); };
+ m_program->cache(m_cache64);
+ m_pr32 = [this](offs_t address) -> u32 { return m_cache64.read_dword(address); };
if(space_config()->m_endianness != ENDIANNESS_NATIVE)
- m_prptr = [cache](offs_t address) -> const void * {
- const u32 *ptr = static_cast<u32 *>(cache->read_ptr(address & ~7));
+ m_prptr = [this](offs_t address) -> const void * {
+ const u32 *ptr = static_cast<u32 *>(m_cache64.read_ptr(address & ~7));
if(!(address & 4))
ptr++;
return ptr;
};
else
- m_prptr = [cache](offs_t address) -> const void * {
- const u32 *ptr = static_cast<u32 *>(cache->read_ptr(address & ~7));
+ m_prptr = [this](offs_t address) -> const void * {
+ const u32 *ptr = static_cast<u32 *>(m_cache64.read_ptr(address & ~7));
if(address & 4)
ptr++;
return ptr;