diff options
Diffstat (limited to 'src/runtime/sys_linux_arm.s')
| -rw-r--r-- | src/runtime/sys_linux_arm.s | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s index 9a9e1c92c7..9ef8c9258b 100644 --- a/src/runtime/sys_linux_arm.s +++ b/src/runtime/sys_linux_arm.s @@ -172,6 +172,20 @@ TEXT runtime·raiseproc(SB),NOSPLIT|NOFRAME,$0 SWI $0 RET +TEXT ·getpid(SB),NOSPLIT,$0-4 + MOVW $SYS_getpid, R7 + SWI $0 + MOVW R0, ret+0(FP) + RET + +TEXT ·tgkill(SB),NOSPLIT,$0-12 + MOVW tgid+0(FP), R0 + MOVW tid+4(FP), R1 + MOVW sig+8(FP), R2 + MOVW $SYS_tgkill, R7 + SWI $0 + RET + TEXT runtime·mmap(SB),NOSPLIT,$0 MOVW addr+0(FP), R0 MOVW n+4(FP), R1 @@ -479,7 +493,11 @@ TEXT runtime·sigfwd(SB),NOSPLIT,$0-16 MOVW R4, R13 RET -TEXT runtime·sigtramp(SB),NOSPLIT,$12 +TEXT runtime·sigtramp(SB),NOSPLIT,$0 + // Reserve space for callee-save registers and arguments. + MOVM.DB.W [R4-R11], (R13) + SUB $16, R13 + // this might be called in external code context, // where g is not set. // first save R0, because runtime·load_g will clobber it @@ -492,6 +510,11 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$12 MOVW R2, 12(R13) MOVW $runtime·sigtrampgo(SB), R11 BL (R11) + + // Restore callee-save registers. + ADD $16, R13 + MOVM.IA.W (R13), [R4-R11] + RET TEXT runtime·cgoSigtramp(SB),NOSPLIT,$0 |
