aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS')
-rw-r--r--src/Ryujinx.HLE/HOS/ArmProcessContext.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs9
2 files changed, 9 insertions, 2 deletions
diff --git a/src/Ryujinx.HLE/HOS/ArmProcessContext.cs b/src/Ryujinx.HLE/HOS/ArmProcessContext.cs
index 4de00978..fde489ab 100644
--- a/src/Ryujinx.HLE/HOS/ArmProcessContext.cs
+++ b/src/Ryujinx.HLE/HOS/ArmProcessContext.cs
@@ -87,6 +87,8 @@ namespace Ryujinx.HLE.HOS
_memoryManager = null;
_gpuContext.UnregisterProcess(_pid);
}
+
+ _cpuContext.Dispose();
}
}
}
diff --git a/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs b/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs
index bec2722e..06b8fd34 100644
--- a/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs
+++ b/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs
@@ -3,6 +3,7 @@ using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.Cpu.AppleHv;
using Ryujinx.Cpu.Jit;
+using Ryujinx.Cpu.LightningJit;
using Ryujinx.Graphics.Gpu;
using Ryujinx.HLE.HOS.Kernel;
using Ryujinx.HLE.HOS.Kernel.Process;
@@ -46,7 +47,9 @@ namespace Ryujinx.HLE.HOS
{
IArmProcessContext processContext;
- if (OperatingSystem.IsMacOS() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64 && for64Bit && context.Device.Configuration.UseHypervisor)
+ bool isArm64Host = RuntimeInformation.ProcessArchitecture == Architecture.Arm64;
+
+ if (OperatingSystem.IsMacOS() && isArm64Host && for64Bit && context.Device.Configuration.UseHypervisor)
{
var cpuEngine = new HvEngine(_tickSource);
var memoryManager = new HvMemoryManager(context.Memory, addressSpaceSize, invalidAccessHandler);
@@ -63,7 +66,9 @@ namespace Ryujinx.HLE.HOS
mode = MemoryManagerMode.SoftwarePageTable;
}
- var cpuEngine = new JitEngine(_tickSource);
+ ICpuEngine cpuEngine = isArm64Host && (mode == MemoryManagerMode.HostMapped || mode == MemoryManagerMode.HostMappedUnsafe)
+ ? new LightningJitEngine(_tickSource)
+ : new JitEngine(_tickSource);
AddressSpace addressSpace = null;