diff options
Diffstat (limited to 'src/pkg/runtime/asm_arm.s')
| -rw-r--r-- | src/pkg/runtime/asm_arm.s | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/pkg/runtime/asm_arm.s b/src/pkg/runtime/asm_arm.s index 26b58cfb17..49a863258c 100644 --- a/src/pkg/runtime/asm_arm.s +++ b/src/pkg/runtime/asm_arm.s @@ -493,17 +493,21 @@ TEXT gosave<>(SB),NOSPLIT,$0 // Call fn(arg) on the scheduler stack, // aligned appropriately for the gcc ABI. // See cgocall.c for more details. -TEXT runtime·asmcgocall(SB),NOSPLIT,$12-8 +TEXT runtime·asmcgocall(SB),NOSPLIT,$0-8 MOVW fn+0(FP), R1 - MOVW arg+4(FP), R2 - MOVW R1, 0(R13) - MOVW R2, 4(R13) - BL runtime·asmcgocall_errno(SB) + MOVW arg+4(FP), R0 + BL asmcgocall<>(SB) RET TEXT runtime·asmcgocall_errno(SB),NOSPLIT,$0-12 MOVW fn+0(FP), R1 MOVW arg+4(FP), R0 + BL asmcgocall<>(SB) + MOVW R0, ret+8(FP) + RET + +TEXT asmcgocall<>(SB),NOSPLIT,$0-0 + // fn in R1, arg in R0. MOVW R13, R2 MOVW g, R5 @@ -529,7 +533,6 @@ TEXT runtime·asmcgocall_errno(SB),NOSPLIT,$0-12 // Restore registers, g, stack pointer. MOVW 20(R13), g MOVW 16(R13), R13 - MOVW R0, ret+8(FP) RET // cgocallback(void (*fn)(void*), void *frame, uintptr framesize) |
