summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorcomex <comexk@gmail.com>2014-10-21 01:53:08 -0400
committercomex <comexk@gmail.com>2014-10-21 01:53:08 -0400
commit24e72cd0641c3a5f1430f509d440403c8b5dd082 (patch)
tree32566947d906a1fe3bd761eb8c8f46492319cdc5 /Source/Core
parent305d2e18630ffb5660e2c4240fe9b9f344598c07 (diff)
parent1963717855aa010f53a3cc68831209ce2e824c61 (diff)
Merge pull request #991 from phire/dsi_should_crash
Panic if game does an invalid memory access.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/HW/MemmapFunctions.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/Source/Core/Core/HW/MemmapFunctions.cpp b/Source/Core/Core/HW/MemmapFunctions.cpp
index d893bbc027..2f088d4523 100644
--- a/Source/Core/Core/HW/MemmapFunctions.cpp
+++ b/Source/Core/Core/HW/MemmapFunctions.cpp
@@ -122,7 +122,7 @@ inline void ReadFromHardware(T &_var, const u32 em_address, const u32 effective_
// fake VMEM
_var = bswap((*(const T*)&m_pFakeVMEM[em_address & FAKEVMEM_MASK]));
}
- else
+ else if (SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU)
{
// MMU
// Handle loads that cross page boundaries (ewwww)
@@ -187,6 +187,10 @@ inline void ReadFromHardware(T &_var, const u32 em_address, const u32 effective_
}
}
}
+ else
+ {
+ PanicAlertT("Invalid Read at 0x%08x, PC = 0x%08x ", em_address, PC);
+ }
}
@@ -238,9 +242,9 @@ inline void WriteToHardware(u32 em_address, const T data, u32 effective_address,
*(T*)&m_pRAM[em_address & RAM_MASK] = bswap(data);
return;
}
- else if (((em_address & 0xF0000000) == 0x90000000) ||
+ else if (m_pEXRAM && (((em_address & 0xF0000000) == 0x90000000) ||
((em_address & 0xF0000000) == 0xD0000000) ||
- ((em_address & 0xF0000000) == 0x10000000))
+ ((em_address & 0xF0000000) == 0x10000000)))
{
*(T*)&m_pEXRAM[em_address & EXRAM_MASK] = bswap(data);
return;
@@ -256,7 +260,7 @@ inline void WriteToHardware(u32 em_address, const T data, u32 effective_address,
// fake VMEM
*(T*)&m_pFakeVMEM[em_address & FAKEVMEM_MASK] = bswap(data);
}
- else
+ else if (SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU)
{
// MMU
// Handle stores that cross page boundaries (ewwww)
@@ -314,6 +318,10 @@ inline void WriteToHardware(u32 em_address, const T data, u32 effective_address,
}
}
}
+ else
+ {
+ PanicAlertT("Invalid Write to 0x%08x, PC = 0x%08x ", em_address, PC);
+ }
}
// =====================