aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs46
1 files changed, 23 insertions, 23 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
index 1b5a6772..beb376f6 100644
--- a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
@@ -1,9 +1,7 @@
-using ChocolArm64;
-using ChocolArm64.Events;
-using ChocolArm64.Memory;
-using ChocolArm64.Translation;
+using ARMeilleure.Memory;
+using ARMeilleure.State;
+using ARMeilleure.Translation;
using Ryujinx.Common;
-using Ryujinx.Common.Logging;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Memory;
@@ -80,9 +78,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
public bool IsPaused { get; private set; }
- public MemoryManager CpuMemory { get; private set; }
+ public IMemoryManager CpuMemory { get; private set; }
- public Translator Translator { get; private set; }
+ public ITranslator Translator { get; private set; }
private SvcHandler _svcHandler;
@@ -793,11 +791,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
}
}
- public void SubscribeThreadEventHandlers(CpuThread context)
+ public void SubscribeThreadEventHandlers(IExecutionContext context)
{
- context.ThreadState.Interrupt += InterruptHandler;
- context.ThreadState.SvcCall += _svcHandler.SvcCall;
- context.ThreadState.Undefined += UndefinedInstructionHandler;
+ context.Interrupt += InterruptHandler;
+ context.SupervisorCall += _svcHandler.SvcCall;
+ context.Undefined += UndefinedInstructionHandler;
}
private void InterruptHandler(object sender, EventArgs e)
@@ -1001,9 +999,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
{
foreach (KThread thread in _threads)
{
- thread.Context.StopExecution();
+ thread.Context.Running = false;
- System.Scheduler.CoreManager.Set(thread.Context.Work);
+ System.Scheduler.CoreManager.Set(thread.HostThread);
}
}
}
@@ -1024,13 +1022,20 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
bool useFlatPageTable = memRegion == MemoryRegion.Application;
- CpuMemory = new MemoryManager(_system.Device.Memory.RamPointer, addrSpaceBits, useFlatPageTable);
+ if (_system.UseLegacyJit)
+ {
+ CpuMemory = new ChocolArm64.Memory.MemoryManager(_system.Device.Memory.RamPointer, addrSpaceBits, useFlatPageTable);
- MemoryManager = new KMemoryManager(_system, CpuMemory);
+ Translator = new ChocolArm64.Translation.Translator((ChocolArm64.Memory.MemoryManager)CpuMemory);
+ }
+ else
+ {
+ CpuMemory = new MemoryManager(_system.Device.Memory.RamPointer, addrSpaceBits, useFlatPageTable);
- Translator = new Translator(CpuMemory);
+ Translator = new Translator((MemoryManager)CpuMemory);
+ }
- Translator.CpuTrace += CpuTraceHandler;
+ MemoryManager = new KMemoryManager(_system, CpuMemory);
}
public void PrintCurrentThreadStackTrace()
@@ -1038,14 +1043,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
System.Scheduler.GetCurrentThread().PrintGuestStackTrace();
}
- private void CpuTraceHandler(object sender, CpuTraceEventArgs e)
- {
- Logger.PrintInfo(LogClass.Cpu, $"Executing at 0x{e.Position:X16}.");
- }
-
private void UndefinedInstructionHandler(object sender, InstUndefinedEventArgs e)
{
- throw new UndefinedInstructionException(e.Position, e.RawOpCode);
+ throw new UndefinedInstructionException(e.Address, e.OpCode);
}
}
} \ No newline at end of file