46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
|
using ARMeilleure.State;
|
||
|
|
||
|
namespace Ryujinx.Cpu.AppleHv
|
||
|
{
|
||
|
public interface IHvExecutionContext
|
||
|
{
|
||
|
ulong Pc { get; set; }
|
||
|
ulong ElrEl1 { get; set; }
|
||
|
ulong EsrEl1 { get; set; }
|
||
|
|
||
|
long TpidrEl0 { get; set; }
|
||
|
long TpidrroEl0 { get; set; }
|
||
|
|
||
|
uint Pstate { get; set; }
|
||
|
|
||
|
uint Fpcr { get; set; }
|
||
|
uint Fpsr { get; set; }
|
||
|
|
||
|
ulong GetX(int index);
|
||
|
void SetX(int index, ulong value);
|
||
|
|
||
|
V128 GetV(int index);
|
||
|
void SetV(int index, V128 value);
|
||
|
|
||
|
public void Load(IHvExecutionContext context)
|
||
|
{
|
||
|
Pc = context.Pc;
|
||
|
ElrEl1 = context.ElrEl1;
|
||
|
EsrEl1 = context.EsrEl1;
|
||
|
TpidrEl0 = context.TpidrEl0;
|
||
|
TpidrroEl0 = context.TpidrroEl0;
|
||
|
Pstate = context.Pstate;
|
||
|
Fpcr = context.Fpcr;
|
||
|
Fpsr = context.Fpsr;
|
||
|
|
||
|
for (int i = 0; i < 32; i++)
|
||
|
{
|
||
|
SetX(i, context.GetX(i));
|
||
|
SetV(i, context.GetV(i));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void RequestInterrupt();
|
||
|
bool GetAndClearInterruptRequested();
|
||
|
}
|
||
|
}
|