SvcHandler.cs 929 B

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