aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_linux_amd64.s
diff options
context:
space:
mode:
authorChris Ball <chris@printf.net>2017-05-25 15:48:02 -0400
committerIan Lance Taylor <iant@golang.org>2017-08-30 21:59:21 +0000
commit4d269ad1754afa177a590b0dfaff48d8adce2619 (patch)
tree837d6670c7683f569f1287ccf97186bdc9a9a608 /src/runtime/sys_linux_amd64.s
parent4641d78a59f37b2a976d98b14ccb1ba5a2d379b0 (diff)
downloadgo-4d269ad1754afa177a590b0dfaff48d8adce2619.tar.xz
runtime: add symbols for Linux syscall numbers on 386/amd64
Matches other architectures by using names for syscalls instead of numbers directly. Fixes #20499. Change-Id: I63d606b0b1fe6fb517fd994a7542a3f38d80dd54 Reviewed-on: https://go-review.googlesource.com/44213 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime/sys_linux_amd64.s')
-rw-r--r--src/runtime/sys_linux_amd64.s112
1 files changed, 74 insertions, 38 deletions
diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
index e0dc3e1264..4632b55a4d 100644
--- a/src/runtime/sys_linux_amd64.s
+++ b/src/runtime/sys_linux_amd64.s
@@ -10,15 +10,51 @@
#include "go_tls.h"
#include "textflag.h"
+#define SYS_read 0
+#define SYS_write 1
+#define SYS_open 2
+#define SYS_close 3
+#define SYS_mmap 9
+#define SYS_munmap 11
+#define SYS_brk 12
+#define SYS_rt_sigaction 13
+#define SYS_rt_sigprocmask 14
+#define SYS_rt_sigreturn 15
+#define SYS_access 21
+#define SYS_sched_yield 24
+#define SYS_mincore 27
+#define SYS_madvise 28
+#define SYS_setittimer 38
+#define SYS_getpid 39
+#define SYS_socket 41
+#define SYS_connect 42
+#define SYS_clone 56
+#define SYS_exit 60
+#define SYS_kill 62
+#define SYS_fcntl 72
+#define SYS_getrlimit 97
+#define SYS_sigaltstack 131
+#define SYS_arch_prctl 158
+#define SYS_gettid 186
+#define SYS_tkill 200
+#define SYS_futex 202
+#define SYS_sched_getaffinity 204
+#define SYS_epoll_create 213
+#define SYS_exit_group 231
+#define SYS_epoll_wait 232
+#define SYS_epoll_ctl 233
+#define SYS_pselect6 270
+#define SYS_epoll_create1 291
+
TEXT runtime·exit(SB),NOSPLIT,$0-4
MOVL code+0(FP), DI
- MOVL $231, AX // exitgroup - force all os threads to exit
+ MOVL $SYS_exit_group, AX
SYSCALL
RET
TEXT runtime·exit1(SB),NOSPLIT,$0-4
MOVL code+0(FP), DI
- MOVL $60, AX // exit - exit the current os thread
+ MOVL $SYS_exit, AX
SYSCALL
RET
@@ -26,7 +62,7 @@ TEXT runtime·open(SB),NOSPLIT,$0-20
MOVQ name+0(FP), DI
MOVL mode+8(FP), SI
MOVL perm+12(FP), DX
- MOVL $2, AX // syscall entry
+ MOVL $SYS_open, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -36,7 +72,7 @@ TEXT runtime·open(SB),NOSPLIT,$0-20
TEXT runtime·closefd(SB),NOSPLIT,$0-12
MOVL fd+0(FP), DI
- MOVL $3, AX // syscall entry
+ MOVL $SYS_close, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -48,7 +84,7 @@ TEXT runtime·write(SB),NOSPLIT,$0-28
MOVQ fd+0(FP), DI
MOVQ p+8(FP), SI
MOVL n+16(FP), DX
- MOVL $1, AX // syscall entry
+ MOVL $SYS_write, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -60,7 +96,7 @@ TEXT runtime·read(SB),NOSPLIT,$0-28
MOVL fd+0(FP), DI
MOVQ p+8(FP), SI
MOVL n+16(FP), DX
- MOVL $0, AX // syscall entry
+ MOVL $SYS_read, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -71,7 +107,7 @@ TEXT runtime·read(SB),NOSPLIT,$0-28
TEXT runtime·getrlimit(SB),NOSPLIT,$0-20
MOVL kind+0(FP), DI
MOVQ limit+8(FP), SI
- MOVL $97, AX // syscall entry
+ MOVL $SYS_getrlimit, AX
SYSCALL
MOVL AX, ret+16(FP)
RET
@@ -93,31 +129,31 @@ TEXT runtime·usleep(SB),NOSPLIT,$16
MOVL $0, R10
MOVQ SP, R8
MOVL $0, R9
- MOVL $270, AX
+ MOVL $SYS_pselect6, AX
SYSCALL
RET
TEXT runtime·gettid(SB),NOSPLIT,$0-4
- MOVL $186, AX // syscall - gettid
+ MOVL $SYS_gettid, AX
SYSCALL
MOVL AX, ret+0(FP)
RET
TEXT runtime·raise(SB),NOSPLIT,$0
- MOVL $186, AX // syscall - gettid
+ MOVL $SYS_gettid, AX
SYSCALL
MOVL AX, DI // arg 1 tid
MOVL sig+0(FP), SI // arg 2
- MOVL $200, AX // syscall - tkill
+ MOVL $SYS_tkill, AX
SYSCALL
RET
TEXT runtime·raiseproc(SB),NOSPLIT,$0
- MOVL $39, AX // syscall - getpid
+ MOVL $SYS_getpid, AX
SYSCALL
MOVL AX, DI // arg 1 pid
MOVL sig+0(FP), SI // arg 2
- MOVL $62, AX // syscall - kill
+ MOVL $SYS_kill, AX
SYSCALL
RET
@@ -125,7 +161,7 @@ TEXT runtime·setitimer(SB),NOSPLIT,$0-24
MOVL mode+0(FP), DI
MOVQ new+8(FP), SI
MOVQ old+16(FP), DX
- MOVL $38, AX // syscall entry
+ MOVL $SYS_setittimer, AX
SYSCALL
RET
@@ -133,7 +169,7 @@ TEXT runtime·mincore(SB),NOSPLIT,$0-28
MOVQ addr+0(FP), DI
MOVQ n+8(FP), SI
MOVQ dst+16(FP), DX
- MOVL $27, AX // syscall entry
+ MOVL $SYS_mincore, AX
SYSCALL
MOVL AX, ret+24(FP)
RET
@@ -204,7 +240,7 @@ TEXT runtime·rtsigprocmask(SB),NOSPLIT,$0-28
MOVQ new+8(FP), SI
MOVQ old+16(FP), DX
MOVL size+24(FP), R10
- MOVL $14, AX // syscall entry
+ MOVL $SYS_rt_sigprocmask, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -216,7 +252,7 @@ TEXT runtime·sysSigaction(SB),NOSPLIT,$0-36
MOVQ new+8(FP), SI
MOVQ old+16(FP), DX
MOVQ size+24(FP), R10
- MOVL $13, AX // syscall entry
+ MOVL $SYS_rt_sigaction, AX
SYSCALL
MOVL AX, ret+32(FP)
RET
@@ -354,7 +390,7 @@ sigtrampnog:
// The code that cares about the precise instructions used is:
// https://gcc.gnu.org/viewcvs/gcc/trunk/libgcc/config/i386/linux-unwind.h?revision=219188&view=markup
TEXT runtime·sigreturn(SB),NOSPLIT,$0
- MOVQ $15, AX // rt_sigreturn
+ MOVQ $SYS_rt_sigreturn, AX
SYSCALL
INT $3 // not reached
@@ -366,7 +402,7 @@ TEXT runtime·sysMmap(SB),NOSPLIT,$0
MOVL fd+24(FP), R8
MOVL off+28(FP), R9
- MOVL $9, AX // mmap
+ MOVL $SYS_mmap, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 3(PC)
@@ -396,7 +432,7 @@ TEXT runtime·callCgoMmap(SB),NOSPLIT,$16
TEXT runtime·sysMunmap(SB),NOSPLIT,$0
MOVQ addr+0(FP), DI
MOVQ n+8(FP), SI
- MOVQ $11, AX // munmap
+ MOVQ $SYS_munmap, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -420,7 +456,7 @@ TEXT runtime·madvise(SB),NOSPLIT,$0
MOVQ addr+0(FP), DI
MOVQ n+8(FP), SI
MOVL flags+16(FP), DX
- MOVQ $28, AX // madvise
+ MOVQ $SYS_madvise, AX
SYSCALL
// ignore failure - maybe pages are locked
RET
@@ -434,7 +470,7 @@ TEXT runtime·futex(SB),NOSPLIT,$0
MOVQ ts+16(FP), R10
MOVQ addr2+24(FP), R8
MOVL val3+32(FP), R9
- MOVL $202, AX
+ MOVL $SYS_futex, AX
SYSCALL
MOVL AX, ret+40(FP)
RET
@@ -452,7 +488,7 @@ TEXT runtime·clone(SB),NOSPLIT,$0
MOVQ gp+24(FP), R9
MOVQ fn+32(FP), R12
- MOVL $56, AX
+ MOVL $SYS_clone, AX
SYSCALL
// In parent, return.
@@ -471,7 +507,7 @@ TEXT runtime·clone(SB),NOSPLIT,$0
JEQ nog
// Initialize m->procid to Linux tid
- MOVL $186, AX // gettid
+ MOVL $SYS_gettid, AX
SYSCALL
MOVQ AX, m_procid(R8)
@@ -491,14 +527,14 @@ nog:
// It shouldn't return. If it does, exit that thread.
MOVL $111, DI
- MOVL $60, AX
+ MOVL $SYS_exit, AX
SYSCALL
JMP -3(PC) // keep exiting
TEXT runtime·sigaltstack(SB),NOSPLIT,$-8
MOVQ new+0(FP), DI
MOVQ old+8(FP), SI
- MOVQ $131, AX
+ MOVQ $SYS_sigaltstack, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -517,7 +553,7 @@ TEXT runtime·settls(SB),NOSPLIT,$32
#endif
MOVQ DI, SI
MOVQ $0x1002, DI // ARCH_SET_FS
- MOVQ $158, AX // arch_prctl
+ MOVQ $SYS_arch_prctl, AX
SYSCALL
CMPQ AX, $0xfffffffffffff001
JLS 2(PC)
@@ -525,7 +561,7 @@ TEXT runtime·settls(SB),NOSPLIT,$32
RET
TEXT runtime·osyield(SB),NOSPLIT,$0
- MOVL $24, AX
+ MOVL $SYS_sched_yield, AX
SYSCALL
RET
@@ -533,7 +569,7 @@ TEXT runtime·sched_getaffinity(SB),NOSPLIT,$0
MOVQ pid+0(FP), DI
MOVQ len+8(FP), SI
MOVQ buf+16(FP), DX
- MOVL $204, AX // syscall entry
+ MOVL $SYS_sched_getaffinity, AX
SYSCALL
MOVL AX, ret+24(FP)
RET
@@ -541,7 +577,7 @@ TEXT runtime·sched_getaffinity(SB),NOSPLIT,$0
// int32 runtime·epollcreate(int32 size);
TEXT runtime·epollcreate(SB),NOSPLIT,$0
MOVL size+0(FP), DI
- MOVL $213, AX // syscall entry
+ MOVL $SYS_epoll_create, AX
SYSCALL
MOVL AX, ret+8(FP)
RET
@@ -549,7 +585,7 @@ TEXT runtime·epollcreate(SB),NOSPLIT,$0
// int32 runtime·epollcreate1(int32 flags);
TEXT runtime·epollcreate1(SB),NOSPLIT,$0
MOVL flags+0(FP), DI
- MOVL $291, AX // syscall entry
+ MOVL $SYS_epoll_create1, AX
SYSCALL
MOVL AX, ret+8(FP)
RET
@@ -560,7 +596,7 @@ TEXT runtime·epollctl(SB),NOSPLIT,$0
MOVL op+4(FP), SI
MOVL fd+8(FP), DX
MOVQ ev+16(FP), R10
- MOVL $233, AX // syscall entry
+ MOVL $SYS_epoll_ctl, AX
SYSCALL
MOVL AX, ret+24(FP)
RET
@@ -571,7 +607,7 @@ TEXT runtime·epollwait(SB),NOSPLIT,$0
MOVQ ev+8(FP), SI
MOVL nev+16(FP), DX
MOVL timeout+20(FP), R10
- MOVL $232, AX // syscall entry
+ MOVL $SYS_epoll_wait, AX
SYSCALL
MOVL AX, ret+24(FP)
RET
@@ -581,7 +617,7 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0
MOVL fd+0(FP), DI // fd
MOVQ $2, SI // F_SETFD
MOVQ $1, DX // FD_CLOEXEC
- MOVL $72, AX // fcntl
+ MOVL $SYS_fcntl, AX
SYSCALL
RET
@@ -590,7 +626,7 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0
TEXT runtime·access(SB),NOSPLIT,$0
MOVQ name+0(FP), DI
MOVL mode+8(FP), SI
- MOVL $21, AX // syscall entry
+ MOVL $SYS_access, AX
SYSCALL
MOVL AX, ret+16(FP)
RET
@@ -600,7 +636,7 @@ TEXT runtime·connect(SB),NOSPLIT,$0-28
MOVL fd+0(FP), DI
MOVQ addr+8(FP), SI
MOVL len+16(FP), DX
- MOVL $42, AX // syscall entry
+ MOVL $SYS_connect, AX
SYSCALL
MOVL AX, ret+24(FP)
RET
@@ -610,7 +646,7 @@ TEXT runtime·socket(SB),NOSPLIT,$0-20
MOVL domain+0(FP), DI
MOVL typ+4(FP), SI
MOVL prot+8(FP), DX
- MOVL $41, AX // syscall entry
+ MOVL $SYS_socket, AX
SYSCALL
MOVL AX, ret+16(FP)
RET
@@ -619,7 +655,7 @@ TEXT runtime·socket(SB),NOSPLIT,$0-20
TEXT runtime·sbrk0(SB),NOSPLIT,$0-8
// Implemented as brk(NULL).
MOVQ $0, DI
- MOVL $12, AX // syscall entry
+ MOVL $SYS_brk, AX
SYSCALL
MOVQ AX, ret+0(FP)
RET