[Unix|Arm64] Correct transition block for unix arm64 (dotnet/coreclr#19822)
authorJarret Shook <jashoo@microsoft.com>
Thu, 6 Sep 2018 03:50:28 +0000 (20:50 -0700)
committerGitHub <noreply@github.com>
Thu, 6 Sep 2018 03:50:28 +0000 (20:50 -0700)
* Correct unix transition block macro

Commit migrated from https://github.com/dotnet/coreclr/commit/045915424f7c4a3e6647cf35d6fca8a7fe48ea16

src/coreclr/src/pal/inc/unixasmmacrosarm64.inc

index b435366..f99efbe 100644 (file)
@@ -161,7 +161,7 @@ C_FUNC(\Name\()_End):
         .endif
 
         __PWTB_StackAlloc = __PWTB_TransitionBlock
-        __PWTB_ArgumentRegisters = __PWTB_StackAlloc + 96
+        __PWTB_ArgumentRegisters = __PWTB_StackAlloc + 104
         __PWTB_ArgumentRegister_FirstArg = __PWTB_ArgumentRegisters + 8
 
         PROLOG_SAVE_REG_PAIR_INDEXED   fp, lr, -176
@@ -192,11 +192,11 @@ C_FUNC(\Name\()_End):
 // Reserve 64 bytes of memory before calling  SAVE_ARGUMENT_REGISTERS
 .macro SAVE_ARGUMENT_REGISTERS reg, ofs
 
-        stp                    x0, x1, [\reg, #(\ofs)]
-        stp                    x2, x3, [\reg, #(\ofs + 16)]
-        stp                    x4, x5, [\reg, #(\ofs + 32)]
-        stp                    x6, x7, [\reg, #(\ofs + 48)]
-        str                    x8, [\reg, #(\ofs + 64)]
+        str                    x8, [\reg, #(\ofs)]
+        stp                    x0, x1, [\reg, #(\ofs + 8)]
+        stp                    x2, x3, [\reg, #(\ofs + 24)]
+        stp                    x4, x5, [\reg, #(\ofs + 40)]
+        stp                    x6, x7, [\reg, #(\ofs + 56)]
 
 .endm
 
@@ -212,11 +212,11 @@ C_FUNC(\Name\()_End):
 
 .macro RESTORE_ARGUMENT_REGISTERS reg, ofs
 
-        ldp                    x0, x1, [\reg, #(\ofs)]
-        ldp                    x2, x3, [\reg, #(\ofs + 16)]
-        ldp                    x4, x5, [\reg, #(\ofs + 32)]
-        ldp                    x6, x7, [\reg, #(\ofs + 48)]
-        ldr                    x8, [\reg, #(\ofs + 64)]
+        ldr                    x8, [\reg, #(\ofs)]
+        ldp                    x0, x1, [\reg, #(\ofs + 8)]
+        ldp                    x2, x3, [\reg, #(\ofs + 24)]
+        ldp                    x4, x5, [\reg, #(\ofs + 40)]
+        ldp                    x6, x7, [\reg, #(\ofs + 56)]
 
 .endm