summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/BreakPoints.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Src/BreakPoints.cpp')
-rw-r--r--Source/Core/Common/Src/BreakPoints.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/Source/Core/Common/Src/BreakPoints.cpp b/Source/Core/Common/Src/BreakPoints.cpp
index 45a0b52daf..1700276d85 100644
--- a/Source/Core/Common/Src/BreakPoints.cpp
+++ b/Source/Core/Common/Src/BreakPoints.cpp
@@ -18,6 +18,7 @@
#include "Common.h"
#include "DebugInterface.h"
#include "BreakPoints.h"
+#include "../../Core/Src/PowerPC/JitCommon/JitBase.h"
#include <sstream>
bool BreakPoints::IsAddressBreakPoint(u32 _iAddress)
@@ -70,7 +71,11 @@ void BreakPoints::AddFromStrings(const TBreakPointsStr& bps)
void BreakPoints::Add(const TBreakPoint& bp)
{
if (!IsAddressBreakPoint(bp.iAddress))
+ {
m_BreakPoints.push_back(bp);
+ if (jit)
+ jit->GetBlockCache()->InvalidateICache(bp.iAddress, 4);
+ }
}
void BreakPoints::Add(u32 em_address, bool temp)
@@ -83,21 +88,35 @@ void BreakPoints::Add(u32 em_address, bool temp)
pt.iAddress = em_address;
m_BreakPoints.push_back(pt);
+
+ if (jit)
+ jit->GetBlockCache()->InvalidateICache(em_address, 4);
}
}
-void BreakPoints::Remove(u32 _iAddress)
+void BreakPoints::Remove(u32 em_address)
{
for (TBreakPoints::iterator i = m_BreakPoints.begin(); i != m_BreakPoints.end(); ++i)
{
- if (i->iAddress == _iAddress)
+ if (i->iAddress == em_address)
{
m_BreakPoints.erase(i);
+ if (jit)
+ jit->GetBlockCache()->InvalidateICache(em_address, 4);
return;
}
}
}
+void BreakPoints::Clear()
+{
+ for (TBreakPoints::iterator i = m_BreakPoints.begin(); i != m_BreakPoints.end(); ++i)
+ {
+ if (jit)
+ jit->GetBlockCache()->InvalidateICache(i->iAddress, 4);
+ m_BreakPoints.erase(i);
+ }
+}
MemChecks::TMemChecksStr MemChecks::GetStrings() const
{