diff --git a/src/Ryujinx.Cpu/LightningJit/Cache/JitCache.cs b/src/Ryujinx.Cpu/LightningJit/Cache/JitCache.cs index 4ab54ecb7..a96e3554a 100644 --- a/src/Ryujinx.Cpu/LightningJit/Cache/JitCache.cs +++ b/src/Ryujinx.Cpu/LightningJit/Cache/JitCache.cs @@ -17,7 +17,8 @@ namespace Ryujinx.Cpu.LightningJit.Cache private static readonly int _pageMask = _pageSize - 1; private const int CodeAlignment = 4; // Bytes. - private const int CacheSize = 256 * 1024 * 1024; + // TODO: JIT Cache size should be application dependent, not global. + private const int CacheSize = 1024 * (1024 * 1024); // Megabytes * Size of Megabytes (since its in bytes). private static JitCacheInvalidation _jitCacheInvalidator; @@ -33,6 +34,14 @@ namespace Ryujinx.Cpu.LightningJit.Cache [SupportedOSPlatform("windows")] [LibraryImport("kernel32.dll", SetLastError = true)] public static partial nint FlushInstructionCache(nint hProcess, nint lpAddress, nuint dwSize); + + [SupportedOSPlatform("macos")] + [LibraryImport("libSystem.dylib", EntryPoint = "sys_icache_invalidate")] + internal static partial void SysICacheInvalidate(nint start, nuint len); + + [SupportedOSPlatform("linux")] + [LibraryImport("libgcc_s.so.1", EntryPoint = "__clear_cache")] + internal static partial void ClearCache(nint begin, nint end); public static void Initialize(IJitMemoryAllocator allocator) {