Implement CNTVCT_EL0 (#1268)

* Implement CNTVCT_EL0

* Fix comment
This commit is contained in:
mageven 2020-05-23 15:45:59 +05:30 committed by GitHub
parent ff7a933ec0
commit 6416bc1938
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 0 deletions

View file

@ -40,6 +40,7 @@ namespace ARMeilleure.Instructions
case 0b11_011_1101_0000_011: dlg = new _U64(NativeInterface.GetTpidr); break; case 0b11_011_1101_0000_011: dlg = new _U64(NativeInterface.GetTpidr); break;
case 0b11_011_1110_0000_000: dlg = new _U64(NativeInterface.GetCntfrqEl0); break; case 0b11_011_1110_0000_000: dlg = new _U64(NativeInterface.GetCntfrqEl0); break;
case 0b11_011_1110_0000_001: dlg = new _U64(NativeInterface.GetCntpctEl0); break; case 0b11_011_1110_0000_001: dlg = new _U64(NativeInterface.GetCntpctEl0); break;
case 0b11_011_1110_0000_010: dlg = new _U64(NativeInterface.GetCntvctEl0); break;
default: throw new NotImplementedException($"Unknown MRS 0x{op.RawOpCode:X8} at 0x{op.Address:X16}."); default: throw new NotImplementedException($"Unknown MRS 0x{op.RawOpCode:X8} at 0x{op.Address:X16}.");
} }

View file

@ -136,6 +136,11 @@ namespace ARMeilleure.Instructions
return GetContext().CntpctEl0; return GetContext().CntpctEl0;
} }
public static ulong GetCntvctEl0()
{
return GetContext().CntvctEl0;
}
public static void SetFpcr(ulong value) public static void SetFpcr(ulong value)
{ {
GetContext().Fpcr = (FPCR)value; GetContext().Fpcr = (FPCR)value;

View file

@ -32,6 +32,10 @@ namespace ARMeilleure.State
} }
} }
// CNTVCT_EL0 = CNTPCT_EL0 - CNTVOFF_EL2
// Since EL2 isn't implemented, CNTVOFF_EL2 = 0
public ulong CntvctEl0 => CntpctEl0;
public static TimeSpan ElapsedTime => _tickCounter.Elapsed; public static TimeSpan ElapsedTime => _tickCounter.Elapsed;
public long TpidrEl0 { get; set; } public long TpidrEl0 { get; set; }