aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/syscall_amd64_linux.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/syscall/syscall_amd64_linux.s')
-rw-r--r--src/syscall/syscall_amd64_linux.s119
1 files changed, 20 insertions, 99 deletions
diff --git a/src/syscall/syscall_amd64_linux.s b/src/syscall/syscall_amd64_linux.s
index 1a37dc0d29..38d6ac442d 100644
--- a/src/syscall/syscall_amd64_linux.s
+++ b/src/syscall/syscall_amd64_linux.s
@@ -6,112 +6,33 @@
// System calls for AMD64, Linux
//
-TEXT syscall·open(SB),1,$0-16
- MOVQ 8(SP), DI
- MOVQ 16(SP), SI
- MOVQ $0, DX
- MOVQ $2, AX // syscall entry
- SYSCALL
- CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 24(SP)
- NEGQ AX
- MOVQ AX, 32(SP)
- RET
- MOVQ AX, 24(SP)
- MOVQ $0, 32(SP)
- RET
-
-TEXT syscall·close(SB),1,$0-16
- MOVQ 8(SP), DI
- MOVL $3, AX // syscall entry
- SYSCALL
- CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 16(SP)
- NEGQ AX
- MOVQ AX, 24(SP)
- RET
- MOVQ AX, 16(SP)
- MOVQ $0, 24(SP)
- RET
-
-TEXT syscall·read(SB),1,$0-16
- MOVL 8(SP), DI
- MOVQ 16(SP), SI
- MOVL 24(SP), DX
- MOVL $0, AX // syscall entry
- SYSCALL
- CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 32(SP)
- NEGQ AX
- MOVQ AX, 40(SP)
- RET
- MOVQ AX, 32(SP)
- MOVQ $0, 40(SP)
- RET
+// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
+// Trap # in AX, args in DI SI DX, return in AX DX
-TEXT syscall·write(SB),1,$0-16
- MOVL 8(SP), DI
- MOVQ 16(SP), SI
- MOVL 24(SP), DX
- MOVL $1, AX // syscall entry
+TEXT syscall·Syscall(SB),1,$-8
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 8(SP), AX // syscall entry
SYSCALL
CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 32(SP)
+ JLS 6(PC)
+ MOVQ $-1, 40(SP) // r1
+ MOVQ $0, 48(SP) // r2
NEGQ AX
- MOVQ AX, 40(SP)
+ MOVQ AX, 56(SP) // errno
RET
- MOVQ AX, 32(SP)
- MOVQ $0, 40(SP)
+ MOVQ AX, 40(SP) // r1
+ MOVQ DX, 48(SP) // r2
+ MOVQ $0, 56(SP) // errno
RET
-TEXT syscall·stat(SB),1,$0-16
- MOVQ 8(SP), DI
- MOVQ 16(SP), SI
- MOVQ $0, DX
- MOVQ $5, AX // syscall entry
- SYSCALL
- CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 24(SP)
- NEGQ AX
- MOVQ AX, 32(SP)
- RET
- MOVQ AX, 24(SP)
- MOVQ $0, 32(SP)
- RET
-
-TEXT syscall·fstat(SB),1,$0-16
- MOVL 8(SP), DI
- MOVQ 16(SP), SI
- MOVQ $0, DX
- MOVQ $5, AX // syscall entry
- SYSCALL
- CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 24(SP)
- NEGQ AX
- MOVQ AX, 32(SP)
- RET
- MOVQ AX, 24(SP)
- MOVQ $0, 32(SP)
+TEXT syscall·AddrToInt(SB),1,$-8
+ MOVQ 8(SP), AX
+ MOVQ AX, 16(SP)
RET
-TEXT syscall·lstat(SB),1,$0-16
- MOVL 8(SP), DI
- MOVQ 16(SP), SI
- MOVQ $0, DX
- MOVQ $6, AX // syscall entry
- SYSCALL
- CMPQ AX, $0xfffffffffffff001
- JLS 5(PC)
- MOVQ $-1, 24(SP)
- NEGQ AX
- MOVQ AX, 32(SP)
- RET
- MOVQ AX, 24(SP)
- MOVQ $0, 32(SP)
+TEXT syscall·StatToInt(SB),1,$-8
+ MOVQ 8(SP), AX
+ MOVQ AX, 16(SP)
RET