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 ...@@ -300,7 +300,7 @@ TEXT runtime·morestack(SB),NOSPLIT,$-8-0
// is still in this function, and not the beginning of the next. // is still in this function, and not the beginning of the next.
UNDEF UNDEF
TEXT runtime·morestack_noctxt(SB),NOSPLIT,$-4-0 TEXT runtime·morestack_noctxt(SB),NOSPLIT,$-8-0
MOVW $0, R26 MOVW $0, R26
B runtime·morestack(SB) B runtime·morestack(SB)
...@@ -745,7 +745,7 @@ eq: ...@@ -745,7 +745,7 @@ eq:
MOVB R3, ret+16(FP) MOVB R3, ret+16(FP)
RET RET
TEXT runtime·cmpstring(SB),NOSPLIT,$-4-40 TEXT runtime·cmpstring(SB),NOSPLIT,$-8-40
MOVD s1_base+0(FP), R2 MOVD s1_base+0(FP), R2
MOVD s1_len+8(FP), R0 MOVD s1_len+8(FP), R0
MOVD s2_base+16(FP), R3 MOVD s2_base+16(FP), R3
...@@ -753,7 +753,7 @@ TEXT runtime·cmpstring(SB),NOSPLIT,$-4-40 ...@@ -753,7 +753,7 @@ TEXT runtime·cmpstring(SB),NOSPLIT,$-4-40
ADD $40, RSP, R7 ADD $40, RSP, R7
B runtime·cmpbody<>(SB) 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+0(FP), R2
MOVD s1+8(FP), R0 MOVD s1+8(FP), R0
MOVD s2+24(FP), R3 MOVD s2+24(FP), R3
...@@ -770,7 +770,7 @@ TEXT bytes·Compare(SB),NOSPLIT,$-4-56 ...@@ -770,7 +770,7 @@ TEXT bytes·Compare(SB),NOSPLIT,$-4-56
// //
// On exit: // On exit:
// R4, R5, and R6 are clobbered // R4, R5, and R6 are clobbered
TEXT runtime·cmpbody<>(SB),NOSPLIT,$-4-0 TEXT runtime·cmpbody<>(SB),NOSPLIT,$-8-0
CMP R2, R3 CMP R2, R3
BEQ samebytes // same starting pointers; compare lengths BEQ samebytes // same starting pointers; compare lengths
CMP R0, R1 CMP R0, R1
......
...@@ -29,10 +29,10 @@ ok: ...@@ -29,10 +29,10 @@ ok:
TEXT runtime∕internal∕atomic·Casuintptr(SB), NOSPLIT, $0-25 TEXT runtime∕internal∕atomic·Casuintptr(SB), NOSPLIT, $0-25
B runtime∕internal∕atomic·Cas64(SB) 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) 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) B runtime∕internal∕atomic·Load64(SB)
TEXT runtime∕internal∕atomic·Storeuintptr(SB), NOSPLIT, $0-16 TEXT runtime∕internal∕atomic·Storeuintptr(SB), NOSPLIT, $0-16
......
...@@ -5,21 +5,21 @@ ...@@ -5,21 +5,21 @@
#include "textflag.h" #include "textflag.h"
// uint32 runtime∕internal∕atomic·Load(uint32 volatile* addr) // 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 MOVD ptr+0(FP), R0
LDARW (R0), R0 LDARW (R0), R0
MOVW R0, ret+8(FP) MOVW R0, ret+8(FP)
RET RET
// uint64 runtime∕internal∕atomic·Load64(uint64 volatile* addr) // 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 MOVD ptr+0(FP), R0
LDAR (R0), R0 LDAR (R0), R0
MOVD R0, ret+8(FP) MOVD R0, ret+8(FP)
RET RET
// void *runtime∕internal∕atomic·Loadp(void *volatile *addr) // 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 MOVD ptr+0(FP), R0
LDAR (R0), R0 LDAR (R0), R0
MOVD R0, ret+8(FP) MOVD R0, ret+8(FP)
......
...@@ -74,7 +74,7 @@ TEXT runtime·thr_start(SB),NOSPLIT,$0 ...@@ -74,7 +74,7 @@ TEXT runtime·thr_start(SB),NOSPLIT,$0
RET RET
// Exit the entire program (like C exit) // 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 code+0(FP), R0 // arg 1 exit status
MOVW $SYS_exit, R7 MOVW $SYS_exit, R7
SWI $0 SWI $0
...@@ -99,7 +99,7 @@ storeloop: ...@@ -99,7 +99,7 @@ storeloop:
MOVW.CS R8, (R8) MOVW.CS R8, (R8)
JMP 0(PC) JMP 0(PC)
TEXT runtime·open(SB),NOSPLIT,$-8 TEXT runtime·open(SB),NOSPLIT,$-4
MOVW name+0(FP), R0 // arg 1 name MOVW name+0(FP), R0 // arg 1 name
MOVW mode+4(FP), R1 // arg 2 mode MOVW mode+4(FP), R1 // arg 2 mode
MOVW perm+8(FP), R2 // arg 3 perm MOVW perm+8(FP), R2 // arg 3 perm
...@@ -109,7 +109,7 @@ TEXT runtime·open(SB),NOSPLIT,$-8 ...@@ -109,7 +109,7 @@ TEXT runtime·open(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP) MOVW R0, ret+12(FP)
RET RET
TEXT runtime·read(SB),NOSPLIT,$-8 TEXT runtime·read(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 // arg 1 fd MOVW fd+0(FP), R0 // arg 1 fd
MOVW p+4(FP), R1 // arg 2 buf MOVW p+4(FP), R1 // arg 2 buf
MOVW n+8(FP), R2 // arg 3 count MOVW n+8(FP), R2 // arg 3 count
...@@ -119,7 +119,7 @@ TEXT runtime·read(SB),NOSPLIT,$-8 ...@@ -119,7 +119,7 @@ TEXT runtime·read(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP) MOVW R0, ret+12(FP)
RET RET
TEXT runtime·write(SB),NOSPLIT,$-8 TEXT runtime·write(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 // arg 1 fd MOVW fd+0(FP), R0 // arg 1 fd
MOVW p+4(FP), R1 // arg 2 buf MOVW p+4(FP), R1 // arg 2 buf
MOVW n+8(FP), R2 // arg 3 count MOVW n+8(FP), R2 // arg 3 count
...@@ -129,7 +129,7 @@ TEXT runtime·write(SB),NOSPLIT,$-8 ...@@ -129,7 +129,7 @@ TEXT runtime·write(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP) MOVW R0, ret+12(FP)
RET RET
TEXT runtime·closefd(SB),NOSPLIT,$-8 TEXT runtime·closefd(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 // arg 1 fd MOVW fd+0(FP), R0 // arg 1 fd
MOVW $SYS_close, R7 MOVW $SYS_close, R7
SWI $0 SWI $0
...@@ -137,7 +137,7 @@ TEXT runtime·closefd(SB),NOSPLIT,$-8 ...@@ -137,7 +137,7 @@ TEXT runtime·closefd(SB),NOSPLIT,$-8
MOVW R0, ret+4(FP) MOVW R0, ret+4(FP)
RET RET
TEXT runtime·getrlimit(SB),NOSPLIT,$-8 TEXT runtime·getrlimit(SB),NOSPLIT,$-4
MOVW kind+0(FP), R0 MOVW kind+0(FP), R0
MOVW limit+4(FP), R1 MOVW limit+4(FP), R1
MOVW $SYS_getrlimit, R7 MOVW $SYS_getrlimit, R7
...@@ -168,7 +168,7 @@ TEXT runtime·raiseproc(SB),NOSPLIT,$0 ...@@ -168,7 +168,7 @@ TEXT runtime·raiseproc(SB),NOSPLIT,$0
SWI $0 SWI $0
RET RET
TEXT runtime·setitimer(SB), NOSPLIT, $-8 TEXT runtime·setitimer(SB), NOSPLIT, $-4
MOVW mode+0(FP), R0 MOVW mode+0(FP), R0
MOVW new+4(FP), R1 MOVW new+4(FP), R1
MOVW old+8(FP), R2 MOVW old+8(FP), R2
...@@ -216,7 +216,7 @@ TEXT runtime·nanotime(SB), NOSPLIT, $32 ...@@ -216,7 +216,7 @@ TEXT runtime·nanotime(SB), NOSPLIT, $32
MOVW R1, ret_hi+4(FP) MOVW R1, ret_hi+4(FP)
RET RET
TEXT runtime·sigaction(SB),NOSPLIT,$-8 TEXT runtime·sigaction(SB),NOSPLIT,$-4
MOVW sig+0(FP), R0 // arg 1 sig MOVW sig+0(FP), R0 // arg 1 sig
MOVW new+4(FP), R1 // arg 2 act MOVW new+4(FP), R1 // arg 2 act
MOVW old+8(FP), R2 // arg 3 oact MOVW old+8(FP), R2 // arg 3 oact
...@@ -283,7 +283,7 @@ TEXT runtime·madvise(SB),NOSPLIT,$0 ...@@ -283,7 +283,7 @@ TEXT runtime·madvise(SB),NOSPLIT,$0
// ignore failure - maybe pages are locked // ignore failure - maybe pages are locked
RET RET
TEXT runtime·sigaltstack(SB),NOSPLIT,$-8 TEXT runtime·sigaltstack(SB),NOSPLIT,$-4
MOVW new+0(FP), R0 MOVW new+0(FP), R0
MOVW old+4(FP), R1 MOVW old+4(FP), R1
MOVW $SYS_sigaltstack, R7 MOVW $SYS_sigaltstack, R7
......
...@@ -33,7 +33,7 @@ storeloop: ...@@ -33,7 +33,7 @@ storeloop:
MOVW R8, (R8) MOVW R8, (R8)
JMP 0(PC) JMP 0(PC)
TEXT runtime·open(SB),NOSPLIT,$-8 TEXT runtime·open(SB),NOSPLIT,$-4
MOVW name+0(FP), R0 MOVW name+0(FP), R0
MOVW mode+4(FP), R1 MOVW mode+4(FP), R1
MOVW perm+8(FP), R2 MOVW perm+8(FP), R2
...@@ -42,14 +42,14 @@ TEXT runtime·open(SB),NOSPLIT,$-8 ...@@ -42,14 +42,14 @@ TEXT runtime·open(SB),NOSPLIT,$-8
MOVW R0, ret+12(FP) MOVW R0, ret+12(FP)
RET RET
TEXT runtime·closefd(SB),NOSPLIT,$-8 TEXT runtime·closefd(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 MOVW fd+0(FP), R0
SWI $0xa00006 SWI $0xa00006
MOVW.CS $-1, R0 MOVW.CS $-1, R0
MOVW R0, ret+4(FP) MOVW R0, ret+4(FP)
RET RET
TEXT runtime·read(SB),NOSPLIT,$-8 TEXT runtime·read(SB),NOSPLIT,$-4
MOVW fd+0(FP), R0 MOVW fd+0(FP), R0
MOVW p+4(FP), R1 MOVW p+4(FP), R1
MOVW n+8(FP), R2 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