diff options
Diffstat (limited to 'src/lib/syscall/asm_amd64_linux.s')
| -rw-r--r-- | src/lib/syscall/asm_amd64_linux.s | 19 |
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 |
