summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2024-05-04 18:07:02 +0200
committerGitHub <noreply@github.com>2024-05-04 18:07:02 +0200
commit3029d8a47f405aadc5511a6b5ce2bbd98fdd1823 (patch)
tree74dafe6c339eacdc4cf11b14cd81864a71f23996 /Source
parent1b19a75600ca22a912dcf3401d0d266b0216762c (diff)
parent3bc900871593300b0b203107543770ac1a64dc41 (diff)
Merge pull request #12729 from JosJuice/no-discard-at-breakpoint
PPCAnalyst: Prevent discarding registers around breakpoints
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/PPCAnalyst.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/Source/Core/Core/PowerPC/PPCAnalyst.cpp b/Source/Core/Core/PowerPC/PPCAnalyst.cpp
index b568656968..a0addb56c6 100644
--- a/Source/Core/Core/PowerPC/PPCAnalyst.cpp
+++ b/Source/Core/Core/PowerPC/PPCAnalyst.cpp
@@ -1003,7 +1003,8 @@ u32 PPCAnalyzer::Analyze(u32 address, CodeBlock* block, CodeBuffer* buffer,
const auto ppc_mode = power_pc.GetMode();
const bool hle = !!HLE::TryReplaceFunction(ppc_symbol_db, op.address, ppc_mode);
- const bool may_exit_block = hle || op.canEndBlock || op.canCauseException;
+ const bool breakpoint = power_pc.GetBreakPoints().IsAddressBreakPoint(op.address);
+ const bool may_exit_block = hle || breakpoint || op.canEndBlock || op.canCauseException;
const bool opWantsFPRF = op.wantsFPRF;
const bool opWantsCA = op.wantsCA;
@@ -1029,7 +1030,7 @@ u32 PPCAnalyzer::Analyze(u32 address, CodeBlock* block, CodeBuffer* buffer,
if (strncmp(op.opinfo->opname, "stfd", 4))
fprInXmm |= op.fregsIn;
- if (hle)
+ if (hle || breakpoint)
{
gprInUse = BitSet32{};
fprInUse = BitSet32{};