IHvExecutionContext.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using ARMeilleure.State;
  2. namespace Ryujinx.Cpu.AppleHv
  3. {
  4. public interface IHvExecutionContext
  5. {
  6. ulong Pc { get; set; }
  7. ulong ElrEl1 { get; set; }
  8. ulong EsrEl1 { get; set; }
  9. long TpidrEl0 { get; set; }
  10. long TpidrroEl0 { get; set; }
  11. uint Pstate { get; set; }
  12. uint Fpcr { get; set; }
  13. uint Fpsr { get; set; }
  14. ulong GetX(int index);
  15. void SetX(int index, ulong value);
  16. V128 GetV(int index);
  17. void SetV(int index, V128 value);
  18. public void Load(IHvExecutionContext context)
  19. {
  20. Pc = context.Pc;
  21. ElrEl1 = context.ElrEl1;
  22. EsrEl1 = context.EsrEl1;
  23. TpidrEl0 = context.TpidrEl0;
  24. TpidrroEl0 = context.TpidrroEl0;
  25. Pstate = context.Pstate;
  26. Fpcr = context.Fpcr;
  27. Fpsr = context.Fpsr;
  28. for (int i = 0; i < 32; i++)
  29. {
  30. SetX(i, context.GetX(i));
  31. SetV(i, context.GetV(i));
  32. }
  33. }
  34. void RequestInterrupt();
  35. bool GetAndClearInterruptRequested();
  36. }
  37. }