diff options
Diffstat (limited to 'ARMeilleure/State/ExecutionContext.cs')
| -rw-r--r-- | ARMeilleure/State/ExecutionContext.cs | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/ARMeilleure/State/ExecutionContext.cs b/ARMeilleure/State/ExecutionContext.cs deleted file mode 100644 index 859fb3a5..00000000 --- a/ARMeilleure/State/ExecutionContext.cs +++ /dev/null @@ -1,173 +0,0 @@ -using ARMeilleure.Memory; -using System; - -namespace ARMeilleure.State -{ - public class ExecutionContext - { - private const int MinCountForCheck = 4000; - - private NativeContext _nativeContext; - - internal IntPtr NativeContextPtr => _nativeContext.BasePtr; - - private bool _interrupted; - - private readonly ICounter _counter; - - public ulong Pc => _nativeContext.GetPc(); - - public uint CtrEl0 => 0x8444c004; - public uint DczidEl0 => 0x00000004; - - public ulong CntfrqEl0 => _counter.Frequency; - public ulong CntpctEl0 => _counter.Counter; - - // CNTVCT_EL0 = CNTPCT_EL0 - CNTVOFF_EL2 - // Since EL2 isn't implemented, CNTVOFF_EL2 = 0 - public ulong CntvctEl0 => CntpctEl0; - - public long TpidrEl0 - { - get => _nativeContext.GetTpidrEl0(); - set => _nativeContext.SetTpidrEl0(value); - } - - public long TpidrroEl0 - { - get => _nativeContext.GetTpidrroEl0(); - set => _nativeContext.SetTpidrroEl0(value); - } - - public uint Pstate - { - get => _nativeContext.GetPstate(); - set => _nativeContext.SetPstate(value); - } - - public FPSR Fpsr - { - get => (FPSR)_nativeContext.GetFPState((uint)FPSR.Mask); - set => _nativeContext.SetFPState((uint)value, (uint)FPSR.Mask); - } - - public FPCR Fpcr - { - get => (FPCR)_nativeContext.GetFPState((uint)FPCR.Mask); - set => _nativeContext.SetFPState((uint)value, (uint)FPCR.Mask); - } - public FPCR StandardFpcrValue => (Fpcr & (FPCR.Ahp)) | FPCR.Dn | FPCR.Fz; - - public FPSCR Fpscr - { - get => (FPSCR)_nativeContext.GetFPState((uint)FPSCR.Mask); - set => _nativeContext.SetFPState((uint)value, (uint)FPSCR.Mask); - } - - public bool IsAarch32 { get; set; } - - internal ExecutionMode ExecutionMode - { - get - { - if (IsAarch32) - { - return GetPstateFlag(PState.TFlag) - ? ExecutionMode.Aarch32Thumb - : ExecutionMode.Aarch32Arm; - } - else - { - return ExecutionMode.Aarch64; - } - } - } - - public bool Running - { - get => _nativeContext.GetRunning(); - private set => _nativeContext.SetRunning(value); - } - - private readonly ExceptionCallbackNoArgs _interruptCallback; - private readonly ExceptionCallback _breakCallback; - private readonly ExceptionCallback _supervisorCallback; - private readonly ExceptionCallback _undefinedCallback; - - public ExecutionContext( - IJitMemoryAllocator allocator, - ICounter counter, - ExceptionCallbackNoArgs interruptCallback = null, - ExceptionCallback breakCallback = null, - ExceptionCallback supervisorCallback = null, - ExceptionCallback undefinedCallback = null) - { - _nativeContext = new NativeContext(allocator); - _counter = counter; - _interruptCallback = interruptCallback; - _breakCallback = breakCallback; - _supervisorCallback = supervisorCallback; - _undefinedCallback = undefinedCallback; - - Running = true; - - _nativeContext.SetCounter(MinCountForCheck); - } - - public ulong GetX(int index) => _nativeContext.GetX(index); - public void SetX(int index, ulong value) => _nativeContext.SetX(index, value); - - public V128 GetV(int index) => _nativeContext.GetV(index); - public void SetV(int index, V128 value) => _nativeContext.SetV(index, value); - - public bool GetPstateFlag(PState flag) => _nativeContext.GetPstateFlag(flag); - public void SetPstateFlag(PState flag, bool value) => _nativeContext.SetPstateFlag(flag, value); - - public bool GetFPstateFlag(FPState flag) => _nativeContext.GetFPStateFlag(flag); - public void SetFPstateFlag(FPState flag, bool value) => _nativeContext.SetFPStateFlag(flag, value); - - internal void CheckInterrupt() - { - if (_interrupted) - { - _interrupted = false; - - _interruptCallback?.Invoke(this); - } - - _nativeContext.SetCounter(MinCountForCheck); - } - - public void RequestInterrupt() - { - _interrupted = true; - } - - internal void OnBreak(ulong address, int imm) - { - _breakCallback?.Invoke(this, address, imm); - } - - internal void OnSupervisorCall(ulong address, int imm) - { - _supervisorCallback?.Invoke(this, address, imm); - } - - internal void OnUndefined(ulong address, int opCode) - { - _undefinedCallback?.Invoke(this, address, opCode); - } - - public void StopRunning() - { - Running = false; - - _nativeContext.SetCounter(0); - } - - public void Dispose() - { - _nativeContext.Dispose(); - } - } -}
\ No newline at end of file |
