Explorar o código

ARMeilleure: Allow TPIDR2_EL0 to be set properly (#339)

Luke Warner hai 1 ano
pai
achega
17483aad24
Modificáronse 1 ficheiros con 12 adicións e 1 borrados
  1. 12 1
      src/ARMeilleure/Instructions/InstEmitSystem.cs

+ 12 - 1
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);
+        }
     }
 }