Merge pull request #10089 from AdmiralCurtiss/jit-cache-valid-block-clear

PowerPC/JitCache: Clear valid_block bits for long invalidations.
This commit is contained in:
Mai M 2021-09-08 04:00:23 -04:00 committed by GitHub
commit 8809d8eb61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 0 deletions

View File

@ -234,6 +234,16 @@ void JitBaseBlockCache::InvalidateICacheInternal(u32 physical_address, u32 addre
else
valid_block.Clear(physical_address / 32);
}
else if (length > 32)
{
// Even if we can't check the set for optimization, we still want to remove all fully covered
// cache lines from the valid_block set so that later calls don't try to invalidate already
// cleared regions.
const u32 covered_block_start = (physical_address + 0x1f) / 32;
const u32 covered_block_end = (physical_address + length) / 32;
for (u32 i = covered_block_start; i < covered_block_end; ++i)
valid_block.Clear(i);
}
if (destroy_block)
{