123456789101112131415161718192021222324252627282930313233 |
-
- .section ".data"
- .globl linux_errno
-
- linux_errno: .int 0
-
- .section ".text"
- .code64
- .globl linux_syscall
- .type linux_syscall, @function
-
- linux_syscall:
- movq %rdi, %rax // C arg1 -> syscall number
- movq %rsi, %rdi // C arg2 -> syscall arg1
- movq %rdx, %rsi // C arg3 -> syscall arg2
- movq %rcx, %rdx // C arg4 -> syscall arg3
- movq %r8, %r10 // C arg5 -> syscall arg4
- movq %r9, %r8 // C arg6 -> syscall arg5
- movq 8(%rsp), %r9 // C arg7 -> syscall arg6
-
- syscall
-
- cmpq $-4095, %rax
- jae 1f
- ret
-
- 1:
- negq %rax
- movl %eax, linux_errno
- movq $-1, %rax
- ret
-
- .size linux_syscall, . - linux_syscall
|