Commit 8a064c60 authored by Austin Clements's avatar Austin Clements

runtime: fix silly frame sizes on arm and arm64

"-8" is not a sensible frame size on arm and we're about to start
rejecting it. Replace it with -4.

Likewise, "-4" is not a sensible frame size on arm64 and we're about
to start rejecting it. Replace it with -8.

Finally, clean up some places we're weirdly inconsistent about using 0
versus -8.

Change-Id: If85e229993d5f7f1f0cfa9852b4e294d053bd784
Reviewed-on: https://go-review.googlesource.com/92038
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
parent 49517430
......@@ -300,7 +300,7 @@ TEXT runtime·morestack(SB),NOSPLIT,$-8-0
// is still in this function, and not the beginning of the next.
UNDEF
TEXT runtime·morestack_noctxt(SB),NOSPLIT,$-4-0
TEXT runtime·morestack_noctxt(SB),NOSPLIT,$-8-0
MOVW $0, R26
B runtime·morestack(SB)
......@@ -745,7 +745,7 @@ eq:
MOVB R3, ret+16(FP)
RET
TEXT runtime·cmpstring(SB),NOSPLIT,$-4-40
TEXT runtime·cmpstring(SB),NOSPLIT,$-8-40
MOVD s1_base+0(FP), R2
MOVD s1_len+8(FP), R0
MOVD s2_base+16(FP), R3
......@@ -753,7 +753,7 @@ TEXT runtime·cmpstring(SB),NOSPLIT,$-4-40
ADD $40, RSP, R7
B runtime·cmpbody<>(SB)
TEXT bytes·Compare(SB),NOSPLIT,$-4-56
TEXT bytes·Compare(SB),NOSPLIT,$-8-56
MOVD s1+0(FP), R2
MOVD s1+8(FP), R0
MOVD s2+24(FP), R3
......@@ -770,7 +770,7 @@ TEXT bytes·Compare(SB),NOSPLIT,$-4-56
//
// On exit:
// R4, R5, and R6 are clobbered
TEXT runtime·cmpbody<>(SB),NOSPLIT,$-4-0
TEXT runtime·cmpbody<>(SB),NOSPLIT,$-8-0
CMP R2, R3
BEQ samebytes // same starting pointers; compare lengths
CMP R0, R1
......
......@@ -29,10 +29,10 @@ ok:
TEXT runtime∕internal∕atomic·Casuintptr(SB), NOSPLIT, $0-25
B runtime∕internal∕atomic·Cas64(SB)
TEXT runtime∕internal∕atomic·Loaduintptr(SB), NOSPLIT, $-8-16
TEXT runtime∕internal∕atomic·Loaduintptr(SB), NOSPLIT, $0-16
B runtime∕internal∕atomic·Load64(SB)
TEXT runtime∕internal∕atomic·Loaduint(SB), NOSPLIT, $-8-16
TEXT runtime∕internal∕atomic·Loaduint(SB), NOSPLIT, $0-16
B runtime∕internal∕atomic·Load64(SB)
TEXT runtime∕internal∕atomic·Storeuintptr(SB), NOSPLIT, $0-16
......
......@@ -5,21 +5,21 @@
#include "textflag.h"
// uint32 runtime∕internal∕atomic·Load(uint32 volatile* addr)
TEXT ·Load(SB),NOSPLIT,$-8-12
TEXT ·Load(SB),NOSPLIT,$0-12
MOVD ptr+0(FP), R0
LDARW (R0), R0
MOVW R0, ret+8(FP)
RET
// uint64 runtime∕internal∕atomic·Load64(uint64 volatile* addr)
TEXT ·Load64(SB),NOSPLIT,$-8-16
TEXT ·Load64(SB),NOSPLIT,$0-16
MOVD ptr+0(FP), R0
LDAR (R0), R0
MOVD R0, ret+8(FP)
RET
// void *runtime∕internal∕atomic·Loadp(void *volatile *addr)
TEXT ·Loadp(SB),NOSPLIT,$-8-16
TEXT ·Loadp(SB),NOSPLIT,$0-16
MOVD ptr+0(FP), R0
LDAR (R0), R0
MOVD R0, ret+8(FP)
......
......@@ -74,7 +74,7 @@ TEXT runtime·thr_start(SB),NOSPLIT,$0
RET
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),NOSPLIT,$-8
TEXT runtime·exit(SB),NOSPLIT,$-4
MOVW code+0(FP), R0 // arg 1 exit status
MOVW $SYS_exit, R7
SWI $0
......@@ -99,7 +99,7 @@ storeloop:
MOVW.CS R8, (R8)
JMP 0(PC)
TEXT runtime·open(SB),NOSPLIT,$-8
TEXT runtime·open(SB),NOSPLIT,$-4
MOVW name+0(FP), R0 // arg 1 name
MOVW mode+4(FP), R1 // arg 2 mode
MOVW perm+8(FP), R2 // arg 3 perm
......@@ -109,7 +109,7 @@ TEXT runtime·open(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP)
RET
TEXT runtime·read(SB),NOSPLIT,$-8
TEXT runtime·read(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 // arg 1 fd
MOVW p+4(FP), R1 // arg 2 buf
MOVW n+8(FP), R2 // arg 3 count
......@@ -119,7 +119,7 @@ TEXT runtime·read(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP)
RET
TEXT runtime·write(SB),NOSPLIT,$-8
TEXT runtime·write(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 // arg 1 fd
MOVW p+4(FP), R1 // arg 2 buf
MOVW n+8(FP), R2 // arg 3 count
......@@ -129,7 +129,7 @@ TEXT runtime·write(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP)
RET
TEXT runtime·closefd(SB),NOSPLIT,$-8
TEXT runtime·closefd(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 // arg 1 fd
MOVW $SYS_close, R7
SWI $0
......@@ -137,7 +137,7 @@ TEXT runtime·closefd(SB),NOSPLIT,$-8
MOVW R0, ret+4(FP)
RET
TEXT runtime·getrlimit(SB),NOSPLIT,$-8
TEXT runtime·getrlimit(SB),NOSPLIT,$-4
MOVW kind+0(FP), R0
MOVW limit+4(FP), R1
MOVW $SYS_getrlimit, R7
......@@ -168,7 +168,7 @@ TEXT runtime·raiseproc(SB),NOSPLIT,$0
SWI $0
RET
TEXT runtime·setitimer(SB), NOSPLIT, $-8
TEXT runtime·setitimer(SB), NOSPLIT, $-4
MOVW mode+0(FP), R0
MOVW new+4(FP), R1
MOVW old+8(FP), R2
......@@ -216,7 +216,7 @@ TEXT runtime·nanotime(SB), NOSPLIT, $32
MOVW R1, ret_hi+4(FP)
RET
TEXT runtime·sigaction(SB),NOSPLIT,$-8
TEXT runtime·sigaction(SB),NOSPLIT,$-4
MOVW sig+0(FP), R0 // arg 1 sig
MOVW new+4(FP), R1 // arg 2 act
MOVW old+8(FP), R2 // arg 3 oact
......@@ -283,7 +283,7 @@ TEXT runtime·madvise(SB),NOSPLIT,$0
// ignore failure - maybe pages are locked
RET
TEXT runtime·sigaltstack(SB),NOSPLIT,$-8
TEXT runtime·sigaltstack(SB),NOSPLIT,$-4
MOVW new+0(FP), R0
MOVW old+4(FP), R1
MOVW $SYS_sigaltstack, R7
......
......@@ -33,7 +33,7 @@ storeloop:
MOVW R8, (R8)
JMP 0(PC)
TEXT runtime·open(SB),NOSPLIT,$-8
TEXT runtime·open(SB),NOSPLIT,$-4
MOVW name+0(FP), R0
MOVW mode+4(FP), R1
MOVW perm+8(FP), R2
......@@ -42,14 +42,14 @@ TEXT runtime·open(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP)
RET
TEXT runtime·closefd(SB),NOSPLIT,$-8
TEXT runtime·closefd(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0
SWI $0xa00006
MOVW.CS $-1, R0
MOVW R0, ret+4(FP)
RET
TEXT runtime·read(SB),NOSPLIT,$-8
TEXT runtime·read(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0
MOVW p+4(FP), R1
MOVW n+8(FP), R2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment