SvcHandler.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using ChocolArm64.Events;
  2. using ChocolArm64.Memory;
  3. using ChocolArm64.State;
  4. using Ryujinx.HLE.HOS.Kernel.Process;
  5. using System;
  6. namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
  7. {
  8. partial class SvcHandler
  9. {
  10. private Switch _device;
  11. private KProcess _process;
  12. private Horizon _system;
  13. private MemoryManager _memory;
  14. public SvcHandler(Switch device, KProcess process)
  15. {
  16. _device = device;
  17. _process = process;
  18. _system = device.System;
  19. _memory = process.CpuMemory;
  20. }
  21. public void SvcCall(object sender, InstExceptionEventArgs e)
  22. {
  23. Action<SvcHandler, CpuThreadState> svcFunc = SvcTable.GetSvcFunc(e.Id);
  24. if (svcFunc == null)
  25. {
  26. throw new NotImplementedException($"SVC 0x{e.Id:X4} is not implemented.");
  27. }
  28. CpuThreadState threadState = (CpuThreadState)sender;
  29. svcFunc(this, threadState);
  30. }
  31. }
  32. }