mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-12 09:48:37 +12:00
PPU Analyser: better constraints for SPRX
This commit is contained in:
parent
c89362f6a2
commit
d5f16ce272
3 changed files with 14 additions and 4 deletions
|
@ -529,11 +529,15 @@ namespace ppu_patterns
|
|||
};
|
||||
}
|
||||
|
||||
void ppu_module::analyse(u32 lib_toc, u32 entry)
|
||||
void ppu_module::analyse(u32 lib_toc, u32 entry, u32 end)
|
||||
{
|
||||
// Assume first segment is executable
|
||||
const u32 start = segs[0].addr;
|
||||
const u32 end = segs[0].addr + segs[0].size;
|
||||
|
||||
if (end == umax)
|
||||
{
|
||||
end = segs[0].addr + segs[0].size;
|
||||
}
|
||||
|
||||
// Known TOCs (usually only 1)
|
||||
std::unordered_set<u32> TOCs;
|
||||
|
@ -1565,6 +1569,12 @@ void ppu_module::analyse(u32 lib_toc, u32 entry)
|
|||
block.size = size;
|
||||
block.toc = func.toc;
|
||||
ppu_log.trace("Block __0x%x added (func=0x%x, size=0x%x, toc=0x%x)", block.addr, _, block.size, block.toc);
|
||||
|
||||
if (!entry)
|
||||
{
|
||||
// Workaround for SPRX: update end to the last found function
|
||||
end = block.addr + block.size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue