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