mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-23 22:16:03 +00:00
92d166ecb7
* Enable CPU JIT cache invalidation * Invalidate cache on IC IVAU
37 lines
1,014 B
C#
37 lines
1,014 B
C#
using ARMeilleure.Memory;
|
|
using ARMeilleure.State;
|
|
using ARMeilleure.Translation;
|
|
|
|
namespace Ryujinx.Cpu
|
|
{
|
|
public class CpuContext
|
|
{
|
|
private readonly Translator _translator;
|
|
|
|
public CpuContext(IMemoryManager memory, bool for64Bit)
|
|
{
|
|
_translator = new Translator(new JitMemoryAllocator(), memory, for64Bit);
|
|
memory.UnmapEvent += UnmapHandler;
|
|
}
|
|
|
|
private void UnmapHandler(ulong address, ulong size)
|
|
{
|
|
_translator.InvalidateJitCacheRegion(address, size);
|
|
}
|
|
|
|
public static ExecutionContext CreateExecutionContext()
|
|
{
|
|
return new ExecutionContext(new JitMemoryAllocator());
|
|
}
|
|
|
|
public void Execute(ExecutionContext context, ulong address)
|
|
{
|
|
_translator.Execute(context, address);
|
|
}
|
|
|
|
public void InvalidateCacheRegion(ulong address, ulong size)
|
|
{
|
|
_translator.InvalidateJitCacheRegion(address, size);
|
|
}
|
|
}
|
|
}
|