]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] runtime: fix newproc arg size on ARM
authorCherry Mui <cherryyz@google.com>
Fri, 21 May 2021 21:00:08 +0000 (17:00 -0400)
committerCherry Mui <cherryyz@google.com>
Fri, 21 May 2021 21:49:42 +0000 (21:49 +0000)
At runtime startup it calls newproc from assembly code to start
the main goroutine. runtime.main has no arguments, so the arg
size should be 0, instead of 8.

While here, use clearer code sequence to open the frame.

Change-Id: I2bbb26a83521ea867897530b86a85b22a3c8be9d
Reviewed-on: https://go-review.googlesource.com/c/go/+/321957
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Go Bot <gobot@golang.org>

src/runtime/asm_arm.s

index 6d3573d68fb0ef3b90462220cc36bd502090ef58..872e56aeb49bc4bf97e1de554ef6c937fa9b820f 100644 (file)
@@ -168,14 +168,14 @@ TEXT runtime·rt0_go(SB),NOSPLIT|NOFRAME|TOPFRAME,$0
        BL      runtime·schedinit(SB)
 
        // create a new goroutine to start program
+       SUB     $12, R13
        MOVW    $runtime·mainPC(SB), R0
-       MOVW.W  R0, -4(R13)
-       MOVW    $8, R0
-       MOVW.W  R0, -4(R13)
+       MOVW    R0, 8(R13)      // arg 2: fn
        MOVW    $0, R0
-       MOVW.W  R0, -4(R13)     // push $0 as guard
+       MOVW    R0, 4(R13)      // arg 1: siz
+       MOVW    R0, 0(R13)      // dummy LR
        BL      runtime·newproc(SB)
-       MOVW    $12(R13), R13   // pop args and LR
+       ADD     $12, R13        // pop args and LR
 
        // start this M
        BL      runtime·mstart(SB)