Sfoglia il codice sorgente

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

Luke Warner 1 anno fa
parent
commit
17483aad24
1 ha cambiato i file con 12 aggiunte e 1 eliminazioni
  1. 12 1
      src/ARMeilleure/Instructions/InstEmitSystem.cs

+ 12 - 1
src/ARMeilleure/Instructions/InstEmitSystem.cs

@@ -88,7 +88,7 @@ namespace ARMeilleure.Instructions
                     EmitSetTpidrEl0(context);
                     EmitSetTpidrEl0(context);
                     return;
                     return;
                 case 0b11_011_1101_0000_101:
                 case 0b11_011_1101_0000_101:
-                    EmitGetTpidr2El0(context);
+                    EmitSetTpidr2El0(context);
                     return;
                     return;
 
 
                 default:
                 default:
@@ -291,5 +291,16 @@ namespace ARMeilleure.Instructions
 
 
             context.Store(context.Add(nativeContext, Const((ulong)NativeContext.GetTpidrEl0Offset())), value);
             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);
+        }
     }
     }
 }
 }