]> Cypherpunks repositories - gostls13.git/commitdiff
runtime, sync/atomic: use NOFRAME on arm
authorAustin Clements <austin@google.com>
Thu, 25 Jan 2018 17:15:23 +0000 (12:15 -0500)
committerAustin Clements <austin@google.com>
Mon, 12 Feb 2018 21:41:30 +0000 (21:41 +0000)
This replaces frame size -4 with the NOFRAME flag in arm assembly.

This was automated with:

sed -i -e 's/\(^TEXT.*[A-Z]\),\( *\)\$-4/\1|NOFRAME,\2$0/' $(find -name '*_arm.s')

Plus three manual comment changes found by:

grep '\$-4' $(find -name '*_arm.s')

The go binary is identical before and after this change.

Change-Id: I0310384d1a584118c41d1cd3a042bb8ea7227ef9
Reviewed-on: https://go-review.googlesource.com/92042
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
25 files changed:
misc/cgo/test/issue9400/asm_arm.s
src/runtime/asm_arm.s
src/runtime/cgo/asm_arm.s
src/runtime/cgo/signal_darwin_arm.s
src/runtime/rt0_android_arm.s
src/runtime/rt0_linux_arm.s
src/runtime/rt0_nacl_arm.s
src/runtime/rt0_plan9_arm.s
src/runtime/sys_darwin_arm.s
src/runtime/sys_freebsd_arm.s
src/runtime/sys_linux_arm.s
src/runtime/sys_nacl_arm.s
src/runtime/sys_netbsd_arm.s
src/runtime/sys_openbsd_arm.s
src/runtime/sys_plan9_arm.s
src/runtime/tls_arm.s
src/runtime/vlop_arm.s
src/sync/atomic/asm_arm.s
src/sync/atomic/asm_darwin_arm.s
src/sync/atomic/asm_freebsd_arm.s
src/sync/atomic/asm_linux_arm.s
src/sync/atomic/asm_nacl_arm.s
src/sync/atomic/asm_netbsd_arm.s
src/sync/atomic/asm_openbsd_arm.s
src/sync/atomic/asm_plan9_arm.s

index 166d53f304e404e435342ab170f57a45787120fd..96c278520f398d2106ef2220c88462ef0c30cafd 100644 (file)
@@ -9,7 +9,7 @@
 TEXT cas<>(SB),NOSPLIT,$0
        MOVW    $0xffff0fc0, R15 // R15 is PC
 
-TEXT ·RewindAndSetgid(SB),NOSPLIT,$-4-0
+TEXT ·RewindAndSetgid(SB),NOSPLIT|NOFRAME,$0-0
        // Save link register
        MOVW    R14, R4
 
index 306984e8f7376ae9f26cd9c469f73d9dd3f96256..bca08405068f053b194871a1256e5cccc0bdbdc3 100644 (file)
@@ -11,7 +11,7 @@
 // internal linking. This is the entry point for the program from the
 // kernel for an ordinary -buildmode=exe program. The stack holds the
 // number of arguments and the C-style argv.
-TEXT _rt0_arm(SB),NOSPLIT,$-4
+TEXT _rt0_arm(SB),NOSPLIT|NOFRAME,$0
        MOVW    (R13), R0       // argc
        MOVW    $4(R13), R1             // argv
        B       runtime·rt0_go(SB)
@@ -19,7 +19,7 @@ TEXT _rt0_arm(SB),NOSPLIT,$-4
 // main is common startup code for most ARM systems when using
 // external linking. The C startup code will call the symbol "main"
 // passing argc and argv in the usual C ABI registers R0 and R1.
-TEXT main(SB),NOSPLIT,$-4
+TEXT main(SB),NOSPLIT|NOFRAME,$0
        B       runtime·rt0_go(SB)
 
 // _rt0_arm_lib is common startup code for most ARM systems when
@@ -106,9 +106,9 @@ GLOBL _rt0_arm_lib_argc<>(SB),NOPTR,$4
 DATA _rt0_arm_lib_argv<>(SB)/4,$0
 GLOBL _rt0_arm_lib_argv<>(SB),NOPTR,$4
 
-// using frame size $-4 means do not save LR on stack.
+// using NOFRAME means do not save LR on stack.
 // argc is in R0, argv is in R1.
-TEXT runtime·rt0_go(SB),NOSPLIT,$-4
+TEXT runtime·rt0_go(SB),NOSPLIT|NOFRAME,$0
        MOVW    $0xcafebabe, R12
 
        // copy arguments forward on an even stack
@@ -208,7 +208,7 @@ TEXT runtime·asminit(SB),NOSPLIT,$0-0
 
 // void gosave(Gobuf*)
 // save state in Gobuf; setjmp
-TEXT runtime·gosave(SB),NOSPLIT,$-4-4
+TEXT runtime·gosave(SB),NOSPLIT|NOFRAME,$0-4
        MOVW    buf+0(FP), R0
        MOVW    R13, gobuf_sp(R0)
        MOVW    LR, gobuf_pc(R0)
@@ -257,7 +257,7 @@ TEXT runtime·gogo(SB),NOSPLIT,$8-4
 // Switch to m->g0's stack, call fn(g).
 // Fn must never return. It should gogo(&g->sched)
 // to keep running g.
-TEXT runtime·mcall(SB),NOSPLIT,$-4-4
+TEXT runtime·mcall(SB),NOSPLIT|NOFRAME,$0-4
        // Save caller state in g->sched.
        MOVW    R13, (g_sched+gobuf_sp)(g)
        MOVW    LR, (g_sched+gobuf_pc)(g)
@@ -374,13 +374,13 @@ noswitch:
 // R3 prolog's LR
 // NB. we do not save R0 because we've forced 5c to pass all arguments
 // on the stack.
-// using frame size $-4 means do not save LR on stack.
+// using NOFRAME means do not save LR on stack.
 //
 // The traceback routines see morestack on a g0 as being
 // the top of a stack (for example, morestack calling newstack
 // calling the scheduler calling newm calling gc), so we must
 // record an argument size. For that purpose, it has no arguments.
-TEXT runtime·morestack(SB),NOSPLIT,$-4-0
+TEXT runtime·morestack(SB),NOSPLIT|NOFRAME,$0-0
        // Cannot grow scheduler stack (m->g0).
        MOVW    g_m(g), R8
        MOVW    m_g0(R8), R4
@@ -422,7 +422,7 @@ TEXT runtime·morestack(SB),NOSPLIT,$-4-0
        // is still in this function, and not the beginning of the next.
        RET
 
-TEXT runtime·morestack_noctxt(SB),NOSPLIT,$-4-0
+TEXT runtime·morestack_noctxt(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    $0, R7
        B runtime·morestack(SB)
 
@@ -441,7 +441,7 @@ TEXT runtime·morestack_noctxt(SB),NOSPLIT,$-4-0
 TEXT reflect·call(SB), NOSPLIT, $0-0
        B       ·reflectcall(SB)
 
-TEXT ·reflectcall(SB),NOSPLIT,$-4-20
+TEXT ·reflectcall(SB),NOSPLIT|NOFRAME,$0-20
        MOVW    argsize+12(FP), R0
        DISPATCH(runtime·call16, 16)
        DISPATCH(runtime·call32, 32)
@@ -562,7 +562,7 @@ TEXT runtime·jmpdefer(SB),NOSPLIT,$0-8
        B       (R1)
 
 // Save state of caller into g->sched. Smashes R11.
-TEXT gosave<>(SB),NOSPLIT,$-4
+TEXT gosave<>(SB),NOSPLIT|NOFRAME,$0
        MOVW    LR, (g_sched+gobuf_pc)(g)
        MOVW    R13, (g_sched+gobuf_sp)(g)
        MOVW    $0, R11
@@ -747,11 +747,11 @@ havem:
        RET
 
 // void setg(G*); set g. for use by needm.
-TEXT runtime·setg(SB),NOSPLIT,$-4-4
+TEXT runtime·setg(SB),NOSPLIT|NOFRAME,$0-4
        MOVW    gg+0(FP), R0
        B       setg<>(SB)
 
-TEXT setg<>(SB),NOSPLIT,$-4-0
+TEXT setg<>(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    R0, g
 
        // Save g to thread-local storage.
@@ -763,7 +763,7 @@ TEXT setg<>(SB),NOSPLIT,$-4-0
        MOVW    g, R0
        RET
 
-TEXT runtime·getcallerpc(SB),NOSPLIT,$-4-4
+TEXT runtime·getcallerpc(SB),NOSPLIT|NOFRAME,$0-4
        MOVW    0(R13), R0              // LR saved by caller
        MOVW    R0, ret+0(FP)
        RET
@@ -771,7 +771,7 @@ TEXT runtime·getcallerpc(SB),NOSPLIT,$-4-4
 TEXT runtime·emptyfunc(SB),0,$0-0
        RET
 
-TEXT runtime·abort(SB),NOSPLIT,$-4-0
+TEXT runtime·abort(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    $0, R0
        MOVW    (R0), R1
 
@@ -781,10 +781,10 @@ TEXT runtime·abort(SB),NOSPLIT,$-4-0
 // To implement publicationBarrier in sys_$GOOS_arm.s using the native
 // instructions, use:
 //
-//     TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+//     TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
 //             B       runtime·armPublicationBarrier(SB)
 //
-TEXT runtime·armPublicationBarrier(SB),NOSPLIT,$-4-0
+TEXT runtime·armPublicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        MOVB    runtime·goarm(SB), R11
        CMP     $7, R11
        BLT     2(PC)
@@ -792,21 +792,21 @@ TEXT runtime·armPublicationBarrier(SB),NOSPLIT,$-4-0
        RET
 
 // AES hashing not implemented for ARM
-TEXT runtime·aeshash(SB),NOSPLIT,$-4-0
+TEXT runtime·aeshash(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    $0, R0
        MOVW    (R0), R1
-TEXT runtime·aeshash32(SB),NOSPLIT,$-4-0
+TEXT runtime·aeshash32(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    $0, R0
        MOVW    (R0), R1
-TEXT runtime·aeshash64(SB),NOSPLIT,$-4-0
+TEXT runtime·aeshash64(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    $0, R0
        MOVW    (R0), R1
-TEXT runtime·aeshashstr(SB),NOSPLIT,$-4-0
+TEXT runtime·aeshashstr(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    $0, R0
        MOVW    (R0), R1
 
 // memequal(p, q unsafe.Pointer, size uintptr) bool
-TEXT runtime·memequal(SB),NOSPLIT,$-4-13
+TEXT runtime·memequal(SB),NOSPLIT|NOFRAME,$0-13
        MOVW    a+0(FP), R1
        MOVW    b+4(FP), R2
        MOVW    size+8(FP), R3
@@ -846,7 +846,7 @@ eq:
        MOVB    R0, ret+8(FP)
        RET
 
-TEXT runtime·cmpstring(SB),NOSPLIT,$-4-20
+TEXT runtime·cmpstring(SB),NOSPLIT|NOFRAME,$0-20
        MOVW    s1_base+0(FP), R2
        MOVW    s1_len+4(FP), R0
        MOVW    s2_base+8(FP), R3
@@ -854,7 +854,7 @@ TEXT runtime·cmpstring(SB),NOSPLIT,$-4-20
        ADD     $20, R13, R7
        B       runtime·cmpbody(SB)
 
-TEXT bytes·Compare(SB),NOSPLIT,$-4-28
+TEXT bytes·Compare(SB),NOSPLIT|NOFRAME,$0-28
        MOVW    s1+0(FP), R2
        MOVW    s1+4(FP), R0
        MOVW    s2+12(FP), R3
@@ -871,7 +871,7 @@ TEXT bytes·Compare(SB),NOSPLIT,$-4-28
 //
 // On exit:
 // R4, R5, and R6 are clobbered
-TEXT runtime·cmpbody(SB),NOSPLIT,$-4-0
+TEXT runtime·cmpbody(SB),NOSPLIT|NOFRAME,$0-0
        CMP     R2, R3
        BEQ     samebytes
        CMP     R0, R1
@@ -981,7 +981,7 @@ TEXT runtime·return0(SB),NOSPLIT,$0
        MOVW    $0, R0
        RET
 
-TEXT runtime·procyield(SB),NOSPLIT,$-4
+TEXT runtime·procyield(SB),NOSPLIT|NOFRAME,$0
        MOVW    cycles+0(FP), R1
        MOVW    $0, R0
 yieldloop:
@@ -1011,7 +1011,7 @@ TEXT _cgo_topofstack(SB),NOSPLIT,$8
 
 // The top-most function running on a goroutine
 // returns to goexit+PCQuantum.
-TEXT runtime·goexit(SB),NOSPLIT,$-4-0
+TEXT runtime·goexit(SB),NOSPLIT|NOFRAME,$0-0
        MOVW    R0, R0  // NOP
        BL      runtime·goexit1(SB)    // does not return
        // traceback from goexit1 must hit code range of goexit
index 0f354220bbf0b75cb130fef582de1b0cb45c4b79..36dab286aecb3df8f26811bb93c72f2cf37682e6 100644 (file)
@@ -7,7 +7,7 @@
 // Called by C code generated by cmd/cgo.
 // func crosscall2(fn func(a unsafe.Pointer, n int32, ctxt uintptr), a unsafe.Pointer, n int32, ctxt uintptr)
 // Saves C callee-saved registers and calls fn with three arguments.
-TEXT crosscall2(SB),NOSPLIT,$-4
+TEXT crosscall2(SB),NOSPLIT|NOFRAME,$0
        /* 
         * We still need to save all callee save register as before, and then
         *  push 3 args for fn (R1, R2, R3).
index f886e4bc06ce6c1b727f7a812edb72ce78e55a17..0be10c02d34487508e78f718be82c4a9ec3f416a 100644 (file)
@@ -10,7 +10,7 @@
 //
 //     R1 - LR at moment of fault
 //     R2 - PC at moment of fault
-TEXT xx_cgo_panicmem(SB),NOSPLIT,$-4
+TEXT xx_cgo_panicmem(SB),NOSPLIT|NOFRAME,$0
        // If in external C code, we need to load the g register.
        BL  runtime·load_g(SB)
        CMP $0, g
index 1246238be01b2416385ead2863107737656ad5fa..cc5b78ef0e3dfcb64141d82c6c871250d080acc2 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "textflag.h"
 
-TEXT _rt0_arm_android(SB),NOSPLIT,$-4
+TEXT _rt0_arm_android(SB),NOSPLIT|NOFRAME,$0
        MOVW            (R13), R0      // argc
        MOVW            $4(R13), R1    // argv
        MOVW            $_rt0_arm_linux1(SB), R4
index ba4ca2b10a607f973e75d673f864f32930490289..8a5722f0069030126e2957f9d8c25cf09533d6db 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "textflag.h"
 
-TEXT _rt0_arm_linux(SB),NOSPLIT,$-4
+TEXT _rt0_arm_linux(SB),NOSPLIT|NOFRAME,$0
        MOVW    (R13), R0       // argc
        MOVW    $4(R13), R1             // argv
        MOVW    $_rt0_arm_linux1(SB), R4
@@ -15,7 +15,7 @@ TEXT _rt0_arm_linux(SB),NOSPLIT,$-4
 TEXT _rt0_arm_linux_lib(SB),NOSPLIT,$0
        B       _rt0_arm_lib(SB)
 
-TEXT _rt0_arm_linux1(SB),NOSPLIT,$-4
+TEXT _rt0_arm_linux1(SB),NOSPLIT|NOFRAME,$0
        // We first need to detect the kernel ABI, and warn the user
        // if the system only supports OABI.
        // The strategy here is to call some EABI syscall to see if
index 2be8a0730fa78aa3d1f88689141ec0a81b8424af..a52c0d8619518f9d050751498ffaf64a2cdea4bd 100644 (file)
@@ -10,7 +10,7 @@
 //     8(FP) - envc
 //     12(FP) - argc
 //     16(FP) - argv, then 0, then envv, then 0, then auxv
-TEXT _rt0_arm_nacl(SB),NOSPLIT,$-4
+TEXT _rt0_arm_nacl(SB),NOSPLIT|NOFRAME,$0
        MOVW    8(R13), R0
        MOVW    $12(R13), R1
        B       runtime·rt0_go(SB)
index d6174a4df5e9d6869f8d90450102a3a39ff4a876..697a78d99a17afb1d185277257cb673b7bd5b9ab 100644 (file)
@@ -6,7 +6,7 @@
 
 //in plan 9 argc is at top of stack followed by ptrs to arguments
 
-TEXT _rt0_arm_plan9(SB),NOSPLIT,$-4
+TEXT _rt0_arm_plan9(SB),NOSPLIT|NOFRAME,$0
        MOVW    R0, _tos(SB)
        MOVW    0(R13), R0
        MOVW    $4(R13), R1
index 1ad904f8331a35766dfc521a152b055e39c19cf6..59b5f46a1780ebf4865384d8a379c4e61e64bf83 100644 (file)
@@ -79,7 +79,7 @@ TEXT runtime·read(SB),NOSPLIT,$0
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·exit(SB),NOSPLIT,$-4
+TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0
        MOVW    code+0(FP), R0
        MOVW    $SYS_exit, R12
        SWI     $0x80
@@ -334,7 +334,7 @@ TEXT runtime·usleep(SB),NOSPLIT,$12
        SWI     $0x80
        RET
 
-TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        B       runtime·armPublicationBarrier(SB)
 
 TEXT runtime·sysctl(SB),NOSPLIT,$0
index e977eeb25c2820e1ebb723ae30db54e8c3c2e588..ab81f061f79daf10dc146994e889f1c059ac0cd8 100644 (file)
@@ -74,7 +74,7 @@ TEXT runtime·thr_start(SB),NOSPLIT,$0
        RET
 
 // Exit the entire program (like C exit)
-TEXT runtime·exit(SB),NOSPLIT,$-4
+TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0
        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,$-4
+TEXT runtime·open(SB),NOSPLIT|NOFRAME,$0
        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,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·read(SB),NOSPLIT,$-4
+TEXT runtime·read(SB),NOSPLIT|NOFRAME,$0
        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,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·write(SB),NOSPLIT,$-4
+TEXT runtime·write(SB),NOSPLIT|NOFRAME,$0
        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,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·closefd(SB),NOSPLIT,$-4
+TEXT runtime·closefd(SB),NOSPLIT|NOFRAME,$0
        MOVW fd+0(FP), R0       // arg 1 fd
        MOVW $SYS_close, R7
        SWI $0
@@ -137,7 +137,7 @@ TEXT runtime·closefd(SB),NOSPLIT,$-4
        MOVW    R0, ret+4(FP)
        RET
 
-TEXT runtime·getrlimit(SB),NOSPLIT,$-4
+TEXT runtime·getrlimit(SB),NOSPLIT|NOFRAME,$0
        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, $-4
+TEXT runtime·setitimer(SB), NOSPLIT|NOFRAME, $0
        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,$-4
+TEXT runtime·sigaction(SB),NOSPLIT|NOFRAME,$0
        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,$-4
+TEXT runtime·sigaltstack(SB),NOSPLIT|NOFRAME,$0
        MOVW new+0(FP), R0
        MOVW old+4(FP), R1
        MOVW $SYS_sigaltstack, R7
@@ -335,7 +335,7 @@ TEXT runtime·sysctl(SB),NOSPLIT,$0
        MOVW    R0, ret+24(FP)
        RET
 
-TEXT runtime·osyield(SB),NOSPLIT,$-4
+TEXT runtime·osyield(SB),NOSPLIT|NOFRAME,$0
        MOVW $SYS_sched_yield, R7
        SWI $0
        RET
@@ -382,11 +382,11 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0
        RET
 
 // TODO: this is only valid for ARMv7+
-TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        B       runtime·armPublicationBarrier(SB)
 
 // TODO(minux): this only supports ARMv6K+.
-TEXT runtime·read_tls_fallback(SB),NOSPLIT,$-4
+TEXT runtime·read_tls_fallback(SB),NOSPLIT|NOFRAME,$0
        WORD $0xee1d0f70 // mrc p15, 0, r0, c13, c0, 3
        RET
 
index 794f9b39a67c00d691f43ec67707a92d52833f02..0869d9349f657be986c5ec60646ed3c6b7642dc0 100644 (file)
@@ -106,7 +106,7 @@ TEXT runtime·getrlimit(SB),NOSPLIT,$0
        MOVW    R0, ret+8(FP)
        RET
 
-TEXT runtime·exit(SB),NOSPLIT,$-4
+TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0
        MOVW    code+0(FP), R0
        MOVW    $SYS_exit_group, R7
        SWI     $0
@@ -114,7 +114,7 @@ TEXT runtime·exit(SB),NOSPLIT,$-4
        MOVW    $1002, R1
        MOVW    R0, (R1)        // fail hard
 
-TEXT exit1<>(SB),NOSPLIT,$-4
+TEXT exit1<>(SB),NOSPLIT|NOFRAME,$0
        MOVW    code+0(FP), R0
        MOVW    $SYS_exit, R7
        SWI     $0
@@ -123,7 +123,7 @@ TEXT exit1<>(SB),NOSPLIT,$-4
        MOVW    R0, (R1)        // fail hard
 
 // func exitThread(wait *uint32)
-TEXT runtime·exitThread(SB),NOSPLIT,$-4-4
+TEXT runtime·exitThread(SB),NOSPLIT|NOFRAME,$0-4
        MOVW    wait+0(FP), R0
        // We're done using the stack.
        // Alas, there's no reliable way to make this write atomic
@@ -144,7 +144,7 @@ TEXT runtime·gettid(SB),NOSPLIT,$0-4
        MOVW    R0, ret+0(FP)
        RET
 
-TEXT   runtime·raise(SB),NOSPLIT,$-4
+TEXT   runtime·raise(SB),NOSPLIT|NOFRAME,$0
        MOVW    $SYS_gettid, R7
        SWI     $0
        // arg 1 tid already in R0 from gettid
@@ -153,7 +153,7 @@ TEXT        runtime·raise(SB),NOSPLIT,$-4
        SWI     $0
        RET
 
-TEXT   runtime·raiseproc(SB),NOSPLIT,$-4
+TEXT   runtime·raiseproc(SB),NOSPLIT|NOFRAME,$0
        MOVW    $SYS_getpid, R7
        SWI     $0
        // arg 1 tid already in R0 from getpid
@@ -499,7 +499,7 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0
        RET
 
 // b __kuser_get_tls @ 0xffff0fe0
-TEXT runtime·read_tls_fallback(SB),NOSPLIT,$-4
+TEXT runtime·read_tls_fallback(SB),NOSPLIT|NOFRAME,$0
        MOVW    $0xffff0fe0, R0
        B       (R0)
 
index 6e01fe42e8de11c3987e7db82854e2eed5e549c6..b403a18c90cc78fea9c26e6daa3f6790afc6cb99 100644 (file)
@@ -315,8 +315,8 @@ TEXT runtime·getRandomData(SB),NOSPLIT,$0-12
        RET
 
 // Likewise, this is only valid for ARMv7+, but that's okay.
-TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        B       runtime·armPublicationBarrier(SB)
 
-TEXT runtime·read_tls_fallback(SB),NOSPLIT,$-4
+TEXT runtime·read_tls_fallback(SB),NOSPLIT|NOFRAME,$0
        WORD $0xe7fedef0 // NACL_INSTR_ARM_ABORT_NOW (UDF #0xEDE0)
index 3acde12ed0d1c68d484d02e13ca623b5357e74bc..6b2c5a83572c2ae8ec6636cf1424dcb427e053fe 100644 (file)
@@ -11,7 +11,7 @@
 #include "textflag.h"
 
 // Exit the entire program (like C exit)
-TEXT runtime·exit(SB),NOSPLIT,$-4
+TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0
        MOVW code+0(FP), R0     // arg 1 exit status
        SWI $0xa00001
        MOVW.CS $0, R8  // crash on syscall failure
@@ -33,7 +33,7 @@ storeloop:
        MOVW R8, (R8)
        JMP 0(PC)
 
-TEXT runtime·open(SB),NOSPLIT,$-4
+TEXT runtime·open(SB),NOSPLIT|NOFRAME,$0
        MOVW name+0(FP), R0
        MOVW mode+4(FP), R1
        MOVW perm+8(FP), R2
@@ -42,14 +42,14 @@ TEXT runtime·open(SB),NOSPLIT,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·closefd(SB),NOSPLIT,$-4
+TEXT runtime·closefd(SB),NOSPLIT|NOFRAME,$0
        MOVW fd+0(FP), R0
        SWI $0xa00006
        MOVW.CS $-1, R0
        MOVW    R0, ret+4(FP)
        RET
 
-TEXT runtime·read(SB),NOSPLIT,$-4
+TEXT runtime·read(SB),NOSPLIT|NOFRAME,$0
        MOVW fd+0(FP), R0
        MOVW p+4(FP), R1
        MOVW n+8(FP), R2
@@ -58,7 +58,7 @@ TEXT runtime·read(SB),NOSPLIT,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·write(SB),NOSPLIT,$-4
+TEXT runtime·write(SB),NOSPLIT|NOFRAME,$0
        MOVW    fd+0(FP), R0    // arg 1 - fd
        MOVW    p+4(FP), R1     // arg 2 - buf
        MOVW    n+8(FP), R2     // arg 3 - nbyte
@@ -143,7 +143,7 @@ TEXT runtime·raiseproc(SB),NOSPLIT,$16
        SWI $0xa00025   // sys_kill
        RET
 
-TEXT runtime·setitimer(SB),NOSPLIT,$-4
+TEXT runtime·setitimer(SB),NOSPLIT|NOFRAME,$0
        MOVW mode+0(FP), R0     // arg 1 - which
        MOVW new+4(FP), R1      // arg 2 - itv
        MOVW old+8(FP), R2      // arg 3 - oitv
@@ -186,7 +186,7 @@ TEXT runtime·nanotime(SB), NOSPLIT, $32
        MOVW R1, ret_hi+4(FP)
        RET
 
-TEXT runtime·getcontext(SB),NOSPLIT,$-4
+TEXT runtime·getcontext(SB),NOSPLIT|NOFRAME,$0
        MOVW ctxt+0(FP), R0     // arg 1 - context
        SWI $0xa00133   // sys_getcontext
        MOVW.CS $0, R8  // crash on syscall failure
@@ -202,7 +202,7 @@ TEXT runtime·sigprocmask(SB),NOSPLIT,$0
        MOVW.CS R8, (R8)
        RET
 
-TEXT runtime·sigreturn_tramp(SB),NOSPLIT,$-4
+TEXT runtime·sigreturn_tramp(SB),NOSPLIT|NOFRAME,$0
        // on entry, SP points to siginfo, we add sizeof(ucontext)
        // to SP to get a pointer to ucontext.
        ADD $0x80, R13, R0 // 0x80 == sizeof(UcontextT)
@@ -291,7 +291,7 @@ TEXT runtime·madvise(SB),NOSPLIT,$0
        // ignore failure - maybe pages are locked
        RET
 
-TEXT runtime·sigaltstack(SB),NOSPLIT,$-4
+TEXT runtime·sigaltstack(SB),NOSPLIT|NOFRAME,$0
        MOVW new+0(FP), R0      // arg 1 - nss
        MOVW old+4(FP), R1      // arg 2 - oss
        SWI $0xa00119   // sys___sigaltstack14
@@ -347,10 +347,10 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0
        RET
 
 // TODO: this is only valid for ARMv7+
-TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        B       runtime·armPublicationBarrier(SB)
 
-TEXT runtime·read_tls_fallback(SB),NOSPLIT,$-4
+TEXT runtime·read_tls_fallback(SB),NOSPLIT|NOFRAME,$0
        MOVM.WP [R1, R2, R3, R12], (R13)
        SWI $0x00a0013c // _lwp_getprivate
        MOVM.IAW    (R13), [R1, R2, R3, R12]
index ea7538630d8aab60088231ee3a97c20b61331920..76a3fe8d91e9f685dc8d536c182a15d6a3199b1b 100644 (file)
@@ -14,7 +14,7 @@
 #define        CLOCK_MONOTONIC $3
 
 // Exit the entire program (like C exit)
-TEXT runtime·exit(SB),NOSPLIT,$-4
+TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0
        MOVW    code+0(FP), R0  // arg 1 - status
        MOVW    $1, R12                 // sys_exit
        SWI     $0
@@ -39,7 +39,7 @@ storeloop:
        MOVW.CS R8, (R8)
        JMP     0(PC)
 
-TEXT runtime·open(SB),NOSPLIT,$-4
+TEXT runtime·open(SB),NOSPLIT|NOFRAME,$0
        MOVW    name+0(FP), R0          // arg 1 - path
        MOVW    mode+4(FP), R1          // arg 2 - mode
        MOVW    perm+8(FP), R2          // arg 3 - perm
@@ -49,7 +49,7 @@ TEXT runtime·open(SB),NOSPLIT,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·closefd(SB),NOSPLIT,$-4
+TEXT runtime·closefd(SB),NOSPLIT|NOFRAME,$0
        MOVW    fd+0(FP), R0            // arg 1 - fd
        MOVW    $6, R12                 // sys_close
        SWI     $0
@@ -57,7 +57,7 @@ TEXT runtime·closefd(SB),NOSPLIT,$-4
        MOVW    R0, ret+4(FP)
        RET
 
-TEXT runtime·read(SB),NOSPLIT,$-4
+TEXT runtime·read(SB),NOSPLIT|NOFRAME,$0
        MOVW    fd+0(FP), R0            // arg 1 - fd
        MOVW    p+4(FP), R1             // arg 2 - buf
        MOVW    n+8(FP), R2             // arg 3 - nbyte
@@ -67,7 +67,7 @@ TEXT runtime·read(SB),NOSPLIT,$-4
        MOVW    R0, ret+12(FP)
        RET
 
-TEXT runtime·write(SB),NOSPLIT,$-4
+TEXT runtime·write(SB),NOSPLIT|NOFRAME,$0
        MOVW    fd+0(FP), R0            // arg 1 - fd
        MOVW    p+4(FP), R1             // arg 2 - buf
        MOVW    n+8(FP), R2             // arg 3 - nbyte
@@ -376,11 +376,11 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0
        SWI     $0
        RET
 
-TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        B       runtime·armPublicationBarrier(SB)
 
 // TODO(jsing): Implement.
-TEXT runtime·read_tls_fallback(SB),NOSPLIT,$-4
+TEXT runtime·read_tls_fallback(SB),NOSPLIT|NOFRAME,$0
        MOVW    $5, R0
        MOVW    R0, (R0)
        RET
index efaf60337b21f5c6f3301d3c387c3d81c86e920f..b82e6c66cd8c11842f27eae1881b592ac0226f11 100644 (file)
@@ -128,7 +128,7 @@ TEXT runtime·plan9_tsemacquire(SB),NOSPLIT,$0-12
        RET
 
 //func nsec(*int64) int64
-TEXT runtime·nsec(SB),NOSPLIT,$-4-12
+TEXT runtime·nsec(SB),NOSPLIT|NOFRAME,$0-12
        MOVW    $SYS_NSEC, R0
        SWI     $0
        MOVW    arg+0(FP), R1
@@ -310,11 +310,11 @@ TEXT runtime·errstr(SB),NOSPLIT,$0-8
        MOVW    R2, ret_len+4(FP)
        RET
 
-TEXT ·publicationBarrier(SB),NOSPLIT,$-4-0
+TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
        B       runtime·armPublicationBarrier(SB)
 
 // never called (cgo not supported)
-TEXT runtime·read_tls_fallback(SB),NOSPLIT,$-4
+TEXT runtime·read_tls_fallback(SB),NOSPLIT|NOFRAME,$0
        MOVW    $0, R0
        MOVW    R0, (R0)
        RET
index a5f5003ea87cfdc3eda021995c5164dc0e33f2e0..cc547a5db1303847346f9c410ac739fce7afeb9b 100644 (file)
@@ -30,7 +30,7 @@
 // NOTE: runtime.gogo assumes that R1 is preserved by this function.
 //       runtime.mcall assumes this function only clobbers R0 and R11.
 // Returns with g in R0.
-TEXT runtime·save_g(SB),NOSPLIT,$-4
+TEXT runtime·save_g(SB),NOSPLIT|NOFRAME,$0
 #ifdef GOOS_nacl
        // nothing to do as nacl/arm does not use TLS at all.
        MOVW    g, R0 // preserve R0 across call to setg<>
index 6a602ffbb89f0c402662fb97936352ac0ff560d4..e7e8ed2e05b5ef77da546c05d985d604017412de 100644 (file)
@@ -84,7 +84,7 @@ TEXT runtime·_sfloat(SB), NOSPLIT, $68-0 // 4 arg + 14*4 saved regs + cpsr + re
 // load the signal fault address into LR, and jump
 // to the real sigpanic.
 // This simulates what sighandler does for a memory fault.
-TEXT runtime·_sfloatpanic(SB),NOSPLIT,$-4
+TEXT runtime·_sfloatpanic(SB),NOSPLIT|NOFRAME,$0
        MOVW    $0, R0
        MOVW.W  R0, -4(R13)
        MOVW    g_sigpc(g), LR
@@ -102,7 +102,7 @@ TEXT runtime·_sfloatpanic(SB),NOSPLIT,$-4
 #define Ra     R11
 
 // Be careful: Ra == R11 will be used by the linker for synthesized instructions.
-TEXT runtime·udiv(SB),NOSPLIT,$-4
+TEXT runtime·udiv(SB),NOSPLIT|NOFRAME,$0
        MOVBU   runtime·hardDiv(SB), Ra
        CMP     $0, Ra
        BNE     udiv_hardware
index 77b0b248bc5193b37653721ab1582cd5c275087b..d5bffcb94606a4d86c59f1147914400a0533e313 100644 (file)
@@ -209,7 +209,7 @@ ok:
        RET
 
 // Fast, cached version of check. No frame, just MOVW CMP RET after first time.
-TEXT   fastCheck64<>(SB),NOSPLIT,$-4
+TEXT   fastCheck64<>(SB),NOSPLIT|NOFRAME,$0
        MOVW    ok64<>(SB), R0
        CMP     $0, R0  // have we been here before?
        RET.NE
index 226822926f5f2bf2b0ac89ecb153bea4ec593cf2..1de2988f9e74d89b39b170175c42b939dc296933 100644 (file)
@@ -42,7 +42,7 @@ TEXT ·SwapUintptr(SB),NOSPLIT,$0
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0
        B ·armCompareAndSwapUint64(SB)
 
 TEXT ·AddInt64(SB),NOSPLIT,$0
index cb8c783a7423d49e9c27c8a63dde058fb31bccd0..78efe971bea5db3a3b918247b88c26303bef703a 100644 (file)
@@ -37,7 +37,7 @@ TEXT ·SwapUintptr(SB),NOSPLIT,$0
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0
        B ·armCompareAndSwapUint64(SB)
 
 TEXT ·AddInt64(SB),NOSPLIT,$0
index fc41968a9e9237552a7e7a6ed8faab082319718c..1d485f85d58154c95768fb74aad28d5f52a4546e 100644 (file)
@@ -120,7 +120,7 @@ TEXT ·generalCAS64(SB),NOSPLIT,$0-21
 
 GLOBL armCAS64(SB), NOPTR, $4
 
-TEXT setupAndCallCAS64<>(SB),NOSPLIT,$-4-21
+TEXT setupAndCallCAS64<>(SB),NOSPLIT|NOFRAME,$0-21
        MOVW    $0xffff0ffc, R0 // __kuser_helper_version
        MOVW    (R0), R0
        // __kuser_cmpxchg64 only present if helper version >= 5
@@ -142,7 +142,7 @@ TEXT setupAndCallCAS64<>(SB),NOSPLIT,$-4-21
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B       ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4-21
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0-21
        MOVW    armCAS64(SB), R0
        CMP     $0, R0
        MOVW.NE R0, R15 // R15 = hardware PC
index f85544c14c23df6ae01add00fadb15c6a75a6cdf..509f503a4c1e7d1d1f320d16876524239f324304 100644 (file)
@@ -37,7 +37,7 @@ TEXT ·SwapUintptr(SB),NOSPLIT,$0
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0
        B ·armCompareAndSwapUint64(SB)
 
 TEXT ·AddInt64(SB),NOSPLIT,$0
index 9a2ab1daba9db3450fe5b9ffee0ae780a3a808e5..d67803119c2bb72eb150333aaf5ec1d2ebe1a12b 100644 (file)
@@ -37,7 +37,7 @@ TEXT ·SwapUintptr(SB),NOSPLIT,$0
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0
        B ·armCompareAndSwapUint64(SB)
 
 TEXT ·AddInt64(SB),NOSPLIT,$0
index a1a062ade67babb0321df2a07a801f47431addf2..c73807fd5a602b17c1b5189816f75328fa23ddab 100644 (file)
@@ -37,7 +37,7 @@ TEXT ·SwapUintptr(SB),NOSPLIT,$0
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0
        B ·armCompareAndSwapUint64(SB)
 
 TEXT ·AddInt64(SB),NOSPLIT,$0
index d74ff4ad5326e143f882ea97036b17e3979ea3cf..54fdeba5d88cc3515b2342b94bbc0309386397da 100644 (file)
@@ -43,7 +43,7 @@ TEXT ·SwapUintptr(SB),NOSPLIT,$0
 TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0
        B ·CompareAndSwapUint64(SB)
 
-TEXT ·CompareAndSwapUint64(SB),NOSPLIT,$-4
+TEXT ·CompareAndSwapUint64(SB),NOSPLIT|NOFRAME,$0
        B ·armCompareAndSwapUint64(SB)
 
 TEXT ·AddInt64(SB),NOSPLIT,$0