From 29c4435791ae95e3dacc61d01db2c1edcbfbc933 Mon Sep 17 00:00:00 2001 From: Luke Warner <65521430+LukeWarnut@users.noreply.github.com> Date: Mon, 2 Dec 2024 15:42:07 -0500 Subject: [PATCH] ARMeilleure: Allow TPIDR2_EL0 to be set properly (#339) --- src/ARMeilleure/Instructions/InstEmitSystem.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ARMeilleure/Instructions/InstEmitSystem.cs b/src/ARMeilleure/Instructions/InstEmitSystem.cs index fbf3b4a70..11c1d0328 100644 --- a/src/ARMeilleure/Instructions/InstEmitSystem.cs +++ b/src/ARMeilleure/Instructions/InstEmitSystem.cs @@ -88,7 +88,7 @@ namespace ARMeilleure.Instructions EmitSetTpidrEl0(context); return; case 0b11_011_1101_0000_101: - EmitGetTpidr2El0(context); + EmitSetTpidr2El0(context); return; default: @@ -291,5 +291,16 @@ namespace ARMeilleure.Instructions context.Store(context.Add(nativeContext, Const((ulong)NativeContext.GetTpidrEl0Offset())), value); } + + private static void EmitSetTpidr2El0(ArmEmitterContext context) + { + OpCodeSystem op = (OpCodeSystem)context.CurrOp; + + Operand value = GetIntOrZR(context, op.Rt); + + Operand nativeContext = context.LoadArgument(OperandType.I64, 0); + + context.Store(context.Add(nativeContext, Const((ulong)NativeContext.GetTpidr2El0Offset())), value); + } } }