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.cs17
1 files changed, 9 insertions, 8 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
index b10737b4..0caeacad 100644
--- a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
@@ -1,4 +1,3 @@
-using ARMeilleure.State;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
@@ -744,14 +743,16 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
}
}
- public void SubscribeThreadEventHandlers(ARMeilleure.State.ExecutionContext context)
+ public IExecutionContext CreateExecutionContext()
{
- context.Interrupt += InterruptHandler;
- context.SupervisorCall += KernelContext.SyscallHandler.SvcCall;
- context.Undefined += UndefinedInstructionHandler;
+ return Context?.CreateExecutionContext(new ExceptionCallbacks(
+ InterruptHandler,
+ null,
+ KernelContext.SyscallHandler.SvcCall,
+ UndefinedInstructionHandler));
}
- private void InterruptHandler(object sender, EventArgs e)
+ private void InterruptHandler(IExecutionContext context)
{
KThread currentThread = KernelStatic.GetCurrentThread();
@@ -1093,12 +1094,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
return false;
}
- private void UndefinedInstructionHandler(object sender, InstUndefinedEventArgs e)
+ private void UndefinedInstructionHandler(IExecutionContext context, ulong address, int opCode)
{
KernelStatic.GetCurrentThread().PrintGuestStackTrace();
KernelStatic.GetCurrentThread()?.PrintGuestRegisterPrintout();
- throw new UndefinedInstructionException(e.Address, e.OpCode);
+ throw new UndefinedInstructionException(address, opCode);
}
protected override void Destroy() => Context.Dispose();