ddc9ae2a83
* Add VTimer as alternative interrupt method on Apple Hypervisor * Fix naming violations on TimeApi * Fix timer interval (was 16us rather than 16ms) * Fix delta ticks calculation * Missing ThrowOnError call * Add SupportedOSPlatform attribute on AppleHv classes
43 lines
1 KiB
C#
43 lines
1 KiB
C#
using ARMeilleure.State;
|
|
|
|
namespace Ryujinx.Cpu.AppleHv
|
|
{
|
|
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));
|
|
}
|
|
}
|
|
}
|
|
}
|