SA_ONSTACK = C.SA_ONSTACK
SA_SIGINFO = C.SA_SIGINFO
+ SI_KERNEL = C.SI_KERNEL
+ SI_TIMER = C.SI_TIMER
+
SIGHUP = C.SIGHUP
SIGINT = C.SIGINT
SIGQUIT = C.SIGQUIT
ITIMER_VIRTUAL = C.ITIMER_VIRTUAL
ITIMER_PROF = C.ITIMER_PROF
+ CLOCK_THREAD_CPUTIME_ID = C.CLOCK_THREAD_CPUTIME_ID
+
+ SIGEV_THREAD_ID = C.SIGEV_THREAD_ID
+
EPOLLIN = C.POLLIN
EPOLLOUT = C.POLLOUT
EPOLLERR = C.POLLERR
type Timeval C.struct_timeval
type Sigaction C.struct_sigaction
type Siginfo C.siginfo_t
+type Itimerspec C.struct_itimerspec
type Itimerval C.struct_itimerval
+type Sigevent C.struct_sigevent
type EpollEvent C.struct_epoll_event
_SA_RESTORER = 0x4000000
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_O_RDONLY = 0x0
_O_NONBLOCK = 0x800
_O_CLOEXEC = 0x80000
uc_sigmask uint32
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
data [8]byte // to match amd64
_SA_RESTORER = 0x4000000
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
data [8]byte // unaligned uintptr
_SA_ONSTACK = 0x8000000
_SA_RESTORER = 0 // unused on ARM
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_O_NONBLOCK = 0x800
_O_CLOEXEC = 0x80000
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
tv.tv_usec = x
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type siginfo struct {
si_signo int32
si_errno int32
_SA_RESTORER = 0x0 // Only used on intel
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
_pad uint32
_SA_ONSTACK = 0x8000000
_SA_SIGINFO = 0x8
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
pad_cgo_0 [4]byte
_SA_ONSTACK = 0x8000000
_SA_SIGINFO = 0x8
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint32
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
pad_cgo_0 [4]byte
_SA_ONSTACK = 0x8000000
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
pad_cgo_0 [4]byte
_SA_ONSTACK = 0x8000000
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
pad_cgo_0 [4]byte
_SA_RESTORER = 0x0
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
pad_cgo_0 [4]byte
_SA_ONSTACK = 0x8000000
_SA_SIGINFO = 0x4
+ _SI_KERNEL = 0x80
+ _SI_TIMER = -0x2
+
_SIGHUP = 0x1
_SIGINT = 0x2
_SIGQUIT = 0x3
_ITIMER_VIRTUAL = 0x1
_ITIMER_PROF = 0x2
+ _CLOCK_THREAD_CPUTIME_ID = 0x3
+
+ _SIGEV_THREAD_ID = 0x4
+
_EPOLLIN = 0x1
_EPOLLOUT = 0x4
_EPOLLERR = 0x8
si_addr uint64
}
+type itimerspec struct {
+ it_interval timespec
+ it_value timespec
+}
+
type itimerval struct {
it_interval timeval
it_value timeval
}
+type sigevent struct {
+ value uintptr
+ signo int32
+ notify int32
+ // below here is a union; sigev_notify_thread_id is the only field we use
+ sigev_notify_thread_id int32
+}
+
type epollevent struct {
events uint32
pad_cgo_0 [4]byte
//go:noescape
func setitimer(mode int32, new, old *itimerval)
+//go:noescape
+func timer_create(clockid int32, sevp *sigevent, timerid *int32) int32
+
+//go:noescape
+func timer_settime(timerid int32, flags int32, new, old *itimerspec) int32
+
+//go:noescape
+func timer_delete(timerid int32) int32
+
//go:noescape
func rtsigprocmask(how int32, new, old *sigset, size int32)
#define SYS_epoll_create 254
#define SYS_epoll_ctl 255
#define SYS_epoll_wait 256
+#define SYS_timer_create 259
+#define SYS_timer_settime 260
+#define SYS_timer_delete 263
#define SYS_clock_gettime 265
#define SYS_tgkill 270
#define SYS_epoll_create1 329
INVOKE_SYSCALL
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-16
+ MOVL $SYS_timer_create, AX
+ MOVL clockid+0(FP), BX
+ MOVL sevp+4(FP), CX
+ MOVL timerid+8(FP), DX
+ INVOKE_SYSCALL
+ MOVL AX, ret+12(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-20
+ MOVL $SYS_timer_settime, AX
+ MOVL timerid+0(FP), BX
+ MOVL flags+4(FP), CX
+ MOVL new+8(FP), DX
+ MOVL old+12(FP), SI
+ INVOKE_SYSCALL
+ MOVL AX, ret+16(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-8
+ MOVL $SYS_timer_delete, AX
+ MOVL timerid+0(FP), BX
+ INVOKE_SYSCALL
+ MOVL AX, ret+4(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT,$0-16
MOVL $SYS_mincore, AX
MOVL addr+0(FP), BX
#define SYS_futex 202
#define SYS_sched_getaffinity 204
#define SYS_epoll_create 213
+#define SYS_timer_create 222
+#define SYS_timer_settime 223
+#define SYS_timer_delete 226
#define SYS_clock_gettime 228
#define SYS_exit_group 231
#define SYS_epoll_ctl 233
SYSCALL
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-28
+ MOVL clockid+0(FP), DI
+ MOVQ sevp+8(FP), SI
+ MOVQ timerid+16(FP), DX
+ MOVL $SYS_timer_create, AX
+ SYSCALL
+ MOVL AX, ret+24(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-28
+ MOVL timerid+0(FP), DI
+ MOVL flags+4(FP), SI
+ MOVQ new+8(FP), DX
+ MOVQ old+16(FP), R10
+ MOVL $SYS_timer_settime, AX
+ SYSCALL
+ MOVL AX, ret+24(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-12
+ MOVL timerid+0(FP), DI
+ MOVL $SYS_timer_delete, AX
+ SYSCALL
+ MOVL AX, ret+8(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT,$0-28
MOVQ addr+0(FP), DI
MOVQ n+8(FP), SI
#define SYS_epoll_create (SYS_BASE + 250)
#define SYS_epoll_ctl (SYS_BASE + 251)
#define SYS_epoll_wait (SYS_BASE + 252)
+#define SYS_timer_create (SYS_BASE + 257)
+#define SYS_timer_settime (SYS_BASE + 258)
+#define SYS_timer_delete (SYS_BASE + 261)
#define SYS_epoll_create1 (SYS_BASE + 357)
#define SYS_pipe2 (SYS_BASE + 359)
#define SYS_fcntl (SYS_BASE + 55)
SWI $0
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-16
+ MOVW clockid+0(FP), R0
+ MOVW sevp+4(FP), R1
+ MOVW timerid+8(FP), R2
+ MOVW $SYS_timer_create, R7
+ SWI $0
+ MOVW R0, ret+12(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-20
+ MOVW timerid+0(FP), R0
+ MOVW flags+4(FP), R1
+ MOVW new+8(FP), R2
+ MOVW old+12(FP), R3
+ MOVW $SYS_timer_settime, R7
+ SWI $0
+ MOVW R0, ret+16(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-8
+ MOVW timerid+0(FP), R0
+ MOVW $SYS_timer_delete, R7
+ SWI $0
+ MOVW R0, ret+4(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT,$0
MOVW addr+0(FP), R0
MOVW n+4(FP), R1
#define SYS_socket 198
#define SYS_connect 203
#define SYS_brk 214
+#define SYS_timer_create 107
+#define SYS_timer_settime 110
+#define SYS_timer_delete 111
TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0-4
MOVW code+0(FP), R0
SVC
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-28
+ MOVW clockid+0(FP), R0
+ MOVD sevp+8(FP), R1
+ MOVD timerid+16(FP), R2
+ MOVD $SYS_timer_create, R8
+ SVC
+ MOVW R0, ret+24(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-28
+ MOVW timerid+0(FP), R0
+ MOVW flags+4(FP), R1
+ MOVD new+8(FP), R2
+ MOVD old+16(FP), R3
+ MOVD $SYS_timer_settime, R8
+ SVC
+ MOVW R0, ret+24(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-12
+ MOVW timerid+0(FP), R0
+ MOVD $SYS_timer_delete, R8
+ SVC
+ MOVW R0, ret+8(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28
MOVD addr+0(FP), R0
MOVD n+8(FP), R1
#define SYS_exit_group 5205
#define SYS_epoll_create 5207
#define SYS_epoll_ctl 5208
+#define SYS_timer_create 5216
+#define SYS_timer_settime 5217
+#define SYS_timer_delete 5220
#define SYS_tgkill 5225
#define SYS_openat 5247
#define SYS_epoll_pwait 5272
SYSCALL
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-28
+ MOVW clockid+0(FP), R4
+ MOVV sevp+8(FP), R5
+ MOVV timerid+16(FP), R6
+ MOVV $SYS_timer_create, R2
+ SYSCALL
+ MOVW R2, ret+24(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-28
+ MOVW timerid+0(FP), R4
+ MOVW flags+4(FP), R5
+ MOVV new+8(FP), R6
+ MOVV old+16(FP), R7
+ MOVV $SYS_timer_settime, R2
+ SYSCALL
+ MOVW R2, ret+24(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-12
+ MOVW timerid+0(FP), R4
+ MOVV $SYS_timer_delete, R2
+ SYSCALL
+ MOVW R2, ret+8(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28
MOVV addr+0(FP), R4
MOVV n+8(FP), R5
#define SYS_epoll_create 4248
#define SYS_epoll_ctl 4249
#define SYS_epoll_wait 4250
+#define SYS_timer_create 4257
+#define SYS_timer_settime 4258
+#define SYS_timer_delete 4261
#define SYS_clock_gettime 4263
#define SYS_tgkill 4266
#define SYS_epoll_create1 4326
SYSCALL
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-16
+ MOVW clockid+0(FP), R4
+ MOVW sevp+4(FP), R5
+ MOVW timerid+8(FP), R6
+ MOVW $SYS_timer_create, R2
+ SYSCALL
+ MOVW R2, ret+12(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-20
+ MOVW timerid+0(FP), R4
+ MOVW flags+4(FP), R5
+ MOVW new+8(FP), R6
+ MOVW old+12(FP), R7
+ MOVW $SYS_timer_settime, R2
+ SYSCALL
+ MOVW R2, ret+16(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-8
+ MOVW timerid+0(FP), R4
+ MOVW $SYS_timer_delete, R2
+ SYSCALL
+ MOVW R2, ret+4(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT,$0-16
MOVW addr+0(FP), R4
MOVW n+4(FP), R5
#define SYS_epoll_create 236
#define SYS_epoll_ctl 237
#define SYS_epoll_wait 238
+#define SYS_timer_create 240
+#define SYS_timer_settime 241
+#define SYS_timer_delete 244
#define SYS_clock_gettime 246
#define SYS_tgkill 250
#define SYS_epoll_create1 315
SYSCALL $SYS_setitimer
RET
+TEXT runtime·timer_create(SB),NOSPLIT,$0-28
+ MOVW clockid+0(FP), R3
+ MOVD sevp+8(FP), R4
+ MOVD timerid+16(FP), R5
+ SYSCALL $SYS_timer_create
+ MOVW R3, ret+24(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-28
+ MOVW timerid+0(FP), R3
+ MOVW flags+4(FP), R4
+ MOVD new+8(FP), R5
+ MOVD old+16(FP), R6
+ SYSCALL $SYS_timer_settime
+ MOVW R3, ret+24(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-12
+ MOVW timerid+0(FP), R3
+ SYSCALL $SYS_timer_delete
+ MOVW R3, ret+8(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28
MOVD addr+0(FP), R3
MOVD n+8(FP), R4
#define SYS_sigaltstack 132
#define SYS_socket 198
#define SYS_tgkill 131
+#define SYS_timer_create 107
+#define SYS_timer_delete 111
+#define SYS_timer_settime 110
#define SYS_tkill 130
#define SYS_write 64
ECALL
RET
+// func timer_create(clockid int32, sevp *sigevent, timerid *int32) int32
+TEXT runtime·timer_create(SB),NOSPLIT,$0-28
+ MOVW clockid+0(FP), A0
+ MOV sevp+8(FP), A1
+ MOV timerid+16(FP), A2
+ MOV $SYS_timer_create, A7
+ ECALL
+ MOVW A0, ret+24(FP)
+ RET
+
+// func timer_settime(timerid int32, flags int32, new, old *itimerspec) int32
+TEXT runtime·timer_settime(SB),NOSPLIT,$0-28
+ MOVW timerid+0(FP), A0
+ MOVW flags+4(FP), A1
+ MOV new+8(FP), A2
+ MOV old+16(FP), A3
+ MOV $SYS_timer_settime, A7
+ ECALL
+ MOVW A0, ret+24(FP)
+ RET
+
+// func timer_delete(timerid int32) int32
+TEXT runtime·timer_delete(SB),NOSPLIT,$0-12
+ MOVW timerid+0(FP), A0
+ MOV $SYS_timer_delete, A7
+ ECALL
+ MOVW A0, ret+8(FP)
+ RET
+
// func mincore(addr unsafe.Pointer, n uintptr, dst *byte) int32
TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28
MOV addr+0(FP), A0
#define SYS_epoll_create 249
#define SYS_epoll_ctl 250
#define SYS_epoll_wait 251
+#define SYS_timer_create 254
+#define SYS_timer_settime 255
+#define SYS_timer_delete 258
#define SYS_clock_gettime 260
#define SYS_pipe2 325
#define SYS_epoll_create1 327
SYSCALL
RET
+TEXT runtime·timer_create(SB),NOSPLIT|NOFRAME,$0-28
+ MOVW clockid+0(FP), R2
+ MOVD sevp+8(FP), R3
+ MOVD timerid+16(FP), R4
+ MOVW $SYS_timer_create, R1
+ SYSCALL
+ MOVW R2, ret+24(FP)
+ RET
+
+TEXT runtime·timer_settime(SB),NOSPLIT|NOFRAME,$0-28
+ MOVW timerid+0(FP), R2
+ MOVW flags+4(FP), R3
+ MOVD new+8(FP), R4
+ MOVD old+16(FP), R5
+ MOVW $SYS_timer_settime, R1
+ SYSCALL
+ MOVW R2, ret+24(FP)
+ RET
+
+TEXT runtime·timer_delete(SB),NOSPLIT|NOFRAME,$0-12
+ MOVW timerid+0(FP), R2
+ MOVW $SYS_timer_delete, R1
+ SYSCALL
+ MOVW R2, ret+8(FP)
+ RET
+
TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28
MOVD addr+0(FP), R2
MOVD n+8(FP), R3