Просмотр исходного кода

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

Luke Warner 1 год назад
Родитель
Сommit
17483aad24
1 измененных файлов с 12 добавлено и 1 удалено
  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);
+        }
     }
 }