#include "go_tls.h"
#include "textflag.h"
+#define CLOCK_REALTIME 0
+#define CLOCK_MONOTONIC 4
+#define FD_CLOEXEC 1
+#define F_SETFD 2
+
+#define SYS_exit 1
+#define SYS_read 3
+#define SYS_write 4
+#define SYS_open 5
+#define SYS_close 6
+#define SYS_getpid 20
+#define SYS_kill 37
+#define SYS_sigaltstack 53
+#define SYS_munmap 73
+#define SYS_madvise 75
+#define SYS_setitimer 83
+#define SYS_fcntl 92
+#define SYS_sysarch 165
+#define SYS___sysctl 202
+#define SYS_clock_gettime 232
+#define SYS_nanosleep 240
+#define SYS_sched_yield 331
+#define SYS_sigprocmask 340
+#define SYS_kqueue 362
+#define SYS_kevent 363
+#define SYS_sigaction 416
+#define SYS_sigreturn 417
+#define SYS_thr_exit 431
+#define SYS_thr_self 432
+#define SYS_thr_kill 433
+#define SYS__umtx_op 454
+#define SYS_thr_new 455
+#define SYS_mmap 477
+#define SYS_cpuset_getaffinity 487
+#define SYS_pipe2 542
+
TEXT runtime·sys_umtx_op(SB),NOSPLIT,$-4
- MOVL $454, AX
+ MOVL $SYS__umtx_op, AX
INT $0x80
JAE 2(PC)
NEGL AX
RET
TEXT runtime·thr_new(SB),NOSPLIT,$-4
- MOVL $455, AX
+ MOVL $SYS_thr_new, AX
INT $0x80
JAE 2(PC)
NEGL AX
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),NOSPLIT,$-4
- MOVL $1, AX
+ MOVL $SYS_exit, AX
INT $0x80
MOVL $0xf1, 0xf1 // crash
RET
// on the stack. We want to pass 0, so switch over to a fake
// stack of 0s. It won't write to the stack.
MOVL $exitStack<>(SB), SP
- MOVL $431, AX // thr_exit
+ MOVL $SYS_thr_exit, AX
INT $0x80
MOVL $0xf1, 0xf1 // crash
JMP 0(PC)
TEXT runtime·open(SB),NOSPLIT,$-4
- MOVL $5, AX
+ MOVL $SYS_open, AX
INT $0x80
JAE 2(PC)
MOVL $-1, AX
RET
TEXT runtime·closefd(SB),NOSPLIT,$-4
- MOVL $6, AX
+ MOVL $SYS_close, AX
INT $0x80
JAE 2(PC)
MOVL $-1, AX
RET
TEXT runtime·read(SB),NOSPLIT,$-4
- MOVL $3, AX
+ MOVL $SYS_read, AX
INT $0x80
JAE 2(PC)
NEGL AX // caller expects negative errno
// func pipe2(flags int32) (r, w int32, errno int32)
TEXT runtime·pipe2(SB),NOSPLIT,$12-16
- MOVL $542, AX
+ MOVL $SYS_pipe2, AX
LEAL r+4(FP), BX
MOVL BX, 4(SP)
MOVL flags+0(FP), BX
RET
TEXT runtime·write1(SB),NOSPLIT,$-4
- MOVL $4, AX
+ MOVL $SYS_write, AX
INT $0x80
JAE 2(PC)
NEGL AX // caller expects negative errno
// thr_self(&0(FP))
LEAL ret+0(FP), AX
MOVL AX, 4(SP)
- MOVL $432, AX
+ MOVL $SYS_thr_self, AX
INT $0x80
RET
TEXT runtime·thr_kill(SB),NOSPLIT,$-4
// thr_kill(tid, sig)
- MOVL $433, AX
+ MOVL $SYS_thr_kill, AX
INT $0x80
RET
TEXT runtime·raiseproc(SB),NOSPLIT,$16
// getpid
- MOVL $20, AX
+ MOVL $SYS_getpid, AX
INT $0x80
// kill(self, sig)
MOVL AX, 4(SP)
MOVL sig+0(FP), AX
MOVL AX, 8(SP)
- MOVL $37, AX
+ MOVL $SYS_kill, AX
INT $0x80
RET
MOVSL
MOVL $0, AX // top 32 bits of file offset
STOSL
- MOVL $477, AX
+ MOVL $SYS_mmap, AX
INT $0x80
JAE ok
MOVL $0, p+24(FP)
RET
TEXT runtime·munmap(SB),NOSPLIT,$-4
- MOVL $73, AX
+ MOVL $SYS_munmap, AX
INT $0x80
JAE 2(PC)
MOVL $0xf1, 0xf1 // crash
RET
TEXT runtime·madvise(SB),NOSPLIT,$-4
- MOVL $75, AX // madvise
+ MOVL $SYS_madvise, AX
INT $0x80
JAE 2(PC)
MOVL $-1, AX
RET
TEXT runtime·setitimer(SB), NOSPLIT, $-4
- MOVL $83, AX
+ MOVL $SYS_setitimer, AX
INT $0x80
RET
// func fallback_walltime() (sec int64, nsec int32)
TEXT runtime·fallback_walltime(SB), NOSPLIT, $32-12
- MOVL $232, AX // clock_gettime
+ MOVL $SYS_clock_gettime, AX
LEAL 12(SP), BX
- MOVL $0, 4(SP) // CLOCK_REALTIME
+ MOVL $CLOCK_REALTIME, 4(SP)
MOVL BX, 8(SP)
INT $0x80
MOVL 12(SP), AX // sec
// func fallback_nanotime() int64
TEXT runtime·fallback_nanotime(SB), NOSPLIT, $32-8
- MOVL $232, AX
+ MOVL $SYS_clock_gettime, AX
LEAL 12(SP), BX
- MOVL $4, 4(SP) // CLOCK_MONOTONIC
+ MOVL $CLOCK_MONOTONIC, 4(SP)
MOVL BX, 8(SP)
INT $0x80
MOVL 12(SP), AX // sec
TEXT runtime·asmSigaction(SB),NOSPLIT,$-4
- MOVL $416, AX
+ MOVL $SYS_sigaction, AX
INT $0x80
MOVL AX, ret+12(FP)
RET
MOVL 24(SP), AX // context
MOVL $0, 0(SP) // syscall gap
MOVL AX, 4(SP)
- MOVL $417, AX // sigreturn(ucontext)
+ MOVL $SYS_sigreturn, AX
INT $0x80
MOVL $0xf1, 0xf1 // crash
RET
TEXT runtime·sigaltstack(SB),NOSPLIT,$0
- MOVL $53, AX
+ MOVL $SYS_sigaltstack, AX
INT $0x80
JAE 2(PC)
MOVL $0xf1, 0xf1 // crash
LEAL 12(SP), AX
MOVL AX, 4(SP) // arg 1 - rqtp
MOVL $0, 8(SP) // arg 2 - rmtp
- MOVL $240, AX // sys_nanosleep
+ MOVL $SYS_nanosleep, AX
INT $0x80
RET
MOVL $0, 0(SP) // syscall gap
MOVL $1, 4(SP)
MOVL AX, 8(SP)
- MOVL $165, AX
+ MOVL $SYS_sysarch, AX
INT $0x80
JAE 2(PC)
INT $3
MOVSL // arg 4 - oldlenp
MOVSL // arg 5 - newp
MOVSL // arg 6 - newlen
- MOVL $202, AX // sys___sysctl
+ MOVL $SYS___sysctl, AX
INT $0x80
JAE 4(PC)
NEGL AX
RET
TEXT runtime·osyield(SB),NOSPLIT,$-4
- MOVL $331, AX // sys_sched_yield
+ MOVL $SYS_sched_yield, AX
INT $0x80
RET
MOVL AX, 8(SP) // arg 2 - set
MOVL old+8(FP), AX
MOVL AX, 12(SP) // arg 3 - oset
- MOVL $340, AX // sys_sigprocmask
+ MOVL $SYS_sigprocmask, AX
INT $0x80
JAE 2(PC)
MOVL $0xf1, 0xf1 // crash
// int32 runtime·kqueue(void);
TEXT runtime·kqueue(SB),NOSPLIT,$0
- MOVL $362, AX
+ MOVL $SYS_kqueue, AX
INT $0x80
JAE 2(PC)
NEGL AX
// int32 runtime·kevent(int kq, Kevent *changelist, int nchanges, Kevent *eventlist, int nevents, Timespec *timeout);
TEXT runtime·kevent(SB),NOSPLIT,$0
- MOVL $363, AX
+ MOVL $SYS_kevent, AX
INT $0x80
JAE 2(PC)
NEGL AX
// int32 runtime·closeonexec(int32 fd);
TEXT runtime·closeonexec(SB),NOSPLIT,$32
- MOVL $92, AX // fcntl
+ MOVL $SYS_fcntl, AX
// 0(SP) is where the caller PC would be; kernel skips it
MOVL fd+0(FP), BX
MOVL BX, 4(SP) // fd
- MOVL $2, 8(SP) // F_SETFD
- MOVL $1, 12(SP) // FD_CLOEXEC
+ MOVL $F_SETFD, 8(SP)
+ MOVL $FD_CLOEXEC, 12(SP)
INT $0x80
JAE 2(PC)
NEGL AX
// func cpuset_getaffinity(level int, which int, id int64, size int, mask *byte) int32
TEXT runtime·cpuset_getaffinity(SB), NOSPLIT, $0-28
- MOVL $487, AX
+ MOVL $SYS_cpuset_getaffinity, AX
INT $0x80
JAE 2(PC)
NEGL AX