aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Process
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Process')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs12
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs46
2 files changed, 29 insertions, 29 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs b/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
index 223bf5da..e2ca44b5 100644
--- a/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
@@ -1,5 +1,5 @@
-using ChocolArm64.Memory;
-using ChocolArm64.State;
+using ARMeilleure.Memory;
+using ARMeilleure.State;
using Ryujinx.HLE.HOS.Diagnostics.Demangler;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.Loaders.Elf;
@@ -40,7 +40,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
_images = new List<Image>();
}
- public string GetGuestStackTrace(CpuThreadState threadState)
+ public string GetGuestStackTrace(IExecutionContext context)
{
EnsureLoaded();
@@ -74,7 +74,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
}
// TODO: ARM32.
- long framePointer = (long)threadState.X29;
+ long framePointer = (long)context.GetX(29);
trace.AppendLine($"Process: {_owner.Name}, PID: {_owner.Pid}");
@@ -218,7 +218,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
}
}
- private void LoadMod0Symbols(MemoryManager memory, long textOffset)
+ private void LoadMod0Symbols(IMemoryManager memory, long textOffset)
{
long mod0Offset = textOffset + memory.ReadUInt32(textOffset + 4);
@@ -288,7 +288,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
}
}
- private ElfSymbol GetSymbol(MemoryManager memory, long address, long strTblAddr)
+ private ElfSymbol GetSymbol(IMemoryManager memory, long address, long strTblAddr)
{
int nameIndex = memory.ReadInt32(address + 0);
int info = memory.ReadByte (address + 4);
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