Arm64 : Fix ldr Dt/St emulation (dotnet/coreclr#25729)
authorSteve MacLean <Steve.MacLean@microsoft.com>
Thu, 18 Jul 2019 15:39:01 +0000 (11:39 -0400)
committerGitHub <noreply@github.com>
Thu, 18 Jul 2019 15:39:01 +0000 (11:39 -0400)
Commit migrated from https://github.com/dotnet/coreclr/commit/7b6e658d36135ff871f24a8530855e3f94d9e447

src/coreclr/src/debug/ee/arm64/arm64walker.cpp

index b38297b3ec9b9682b87d705d5b262cf0ac6e1955..398d326e8a1907ba57eb499579bac5c2a4436625 100644 (file)
@@ -200,12 +200,15 @@ BYTE*  NativeWalker::SetupOrSimulateInstructionForPatchSkip(T_CONTEXT * context,
                 switch (opc)
                 {
                 case 0: //4byte data into St
-                    RegContents = 0xFFFFFFFF & RegContents;  //zero the upper 32bit
-                    SetReg(context, RegNum, RegContents);
+                    SimdRegContents.Low = 0xFFFFFFFF & RegContents;  //zero the upper 32bit
+                    SimdRegContents.High = 0;
+                    SetSimdReg(context, RegNum, SimdRegContents);
+                    break;
                 case 1: //8byte data into Dt
-                    SetReg(context, RegNum, RegContents);
+                    SimdRegContents.Low = RegContents;
+                    SimdRegContents.High = 0;
+                    SetSimdReg(context, RegNum, SimdRegContents);
                     break;
-
                 case 2: //SIMD 16 byte data
                     SimdRegContents = GetSimdMem(ip);
                     SetSimdReg(context, RegNum, SimdRegContents);