aboutsummaryrefslogtreecommitdiff
path: root/src/lib/syscall/asm_amd64_linux.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/syscall/asm_amd64_linux.s')
-rw-r--r--src/lib/syscall/asm_amd64_linux.s19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/syscall/asm_amd64_linux.s b/src/lib/syscall/asm_amd64_linux.s
index e0c1153878..2826c1b580 100644
--- a/src/lib/syscall/asm_amd64_linux.s
+++ b/src/lib/syscall/asm_amd64_linux.s
@@ -57,3 +57,22 @@ ok6:
MOVQ $0, 80(SP) // errno
CALL sys·exitsyscall(SB)
RET
+
+TEXT syscall·RawSyscall(SB),7,$0
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 8(SP), AX // syscall entry
+ SYSCALL
+ CMPQ AX, $0xfffffffffffff001
+ JLS ok1
+ MOVQ $-1, 40(SP) // r1
+ MOVQ $0, 48(SP) // r2
+ NEGQ AX
+ MOVQ AX, 56(SP) // errno
+ RET
+ok1:
+ MOVQ AX, 40(SP) // r1
+ MOVQ DX, 48(SP) // r2
+ MOVQ $0, 56(SP) // errno
+ RET