Arm64 Fix Rtl*Context (#25745)
[platform/upstream/coreclr.git] / src / pal / src / arch / arm64 / context2.S
index 64a19c9..7b165c2 100644 (file)
@@ -99,9 +99,8 @@ LOCAL_LABEL(Done_CONTEXT_INTEGER):
     add x0, x0,   CONTEXT_FLOAT_CONTROL_OFFSET
     mrs x1, fpcr
     mrs x2, fpsr
-    sub x0, x0,   CONTEXT_FLOAT_CONTROL_OFFSET
     stp x1, x2,   [x0, CONTEXT_Fpcr]
-    sub x0, x0,   CONTEXT_NEON_OFFSET
+    sub x0, x0,   CONTEXT_FLOAT_CONTROL_OFFSET + CONTEXT_NEON_OFFSET
 
 LOCAL_LABEL(Done_CONTEXT_FLOATING_POINT):
     
@@ -173,10 +172,11 @@ LOCAL_LABEL(Restore_CONTEXT_FLOATING_POINT):
     ldp q26, q27, [x16, CONTEXT_V26]
     ldp q28, q29, [x16, CONTEXT_V28]
     ldp q30, q31, [x16, CONTEXT_V30]
+    add x16, x16, CONTEXT_FLOAT_CONTROL_OFFSET
     ldp x1, x2,   [x16, CONTEXT_Fpcr]
     msr fpcr, x1
     msr fpsr, x2
-    sub x16, x16,   CONTEXT_NEON_OFFSET
+    sub x16, x16,   CONTEXT_FLOAT_CONTROL_OFFSET + CONTEXT_NEON_OFFSET
 
 LOCAL_LABEL(No_Restore_CONTEXT_FLOATING_POINT):
     tbz w17, #CONTEXT_INTEGER_BIT, LOCAL_LABEL(No_Restore_CONTEXT_INTEGER)