runtime: fix a register save/restore bug in sigtramp of arm-darwin

In sigtramp of sys_darwin_arm.s, the callee-save register R4 is
saved to the stack, but later R2 is also saved to the save position.

That CL fixes the unexpected lost of the value in R4.

fixes #32744

Change-Id: Ifaeb99f11e4abf0c79bec9da67e0db97c358010c
Reviewed-on: https://go-review.googlesource.com/c/go/+/183517
Run-TryBot: Ben Shi <powerman1st@163.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/src/runtime/sys_darwin_arm.s b/src/runtime/sys_darwin_arm.s
index 82470bc..b1c22b3 100644
--- a/src/runtime/sys_darwin_arm.s
+++ b/src/runtime/sys_darwin_arm.s
@@ -160,14 +160,14 @@
 
 TEXT runtime·sigtramp(SB),NOSPLIT,$0
 	// Reserve space for callee-save registers and arguments.
-	SUB	$36, R13
+	SUB	$40, R13
 
-	MOVW	R4, 12(R13)
-	MOVW	R5, 16(R13)
-	MOVW	R6, 20(R13)
-	MOVW	R7, 24(R13)
-	MOVW	R8, 28(R13)
-	MOVW	R11, 32(R13)
+	MOVW	R4, 16(R13)
+	MOVW	R5, 20(R13)
+	MOVW	R6, 24(R13)
+	MOVW	R7, 28(R13)
+	MOVW	R8, 32(R13)
+	MOVW	R11, 36(R13)
 
 	// Save arguments.
 	MOVW	R0, 4(R13)	// sig
@@ -216,14 +216,14 @@
 	MOVW	R5, R13
 
 	// Restore callee-save registers.
-	MOVW	12(R13), R4
-	MOVW	16(R13), R5
-	MOVW	20(R13), R6
-	MOVW	24(R13), R7
-	MOVW	28(R13), R8
-	MOVW	32(R13), R11
+	MOVW	16(R13), R4
+	MOVW	20(R13), R5
+	MOVW	24(R13), R6
+	MOVW	28(R13), R7
+	MOVW	32(R13), R8
+	MOVW	36(R13), R11
 
-	ADD $36, R13
+	ADD	$40, R13
 
 	RET