Last active
January 25, 2022 12:43
-
-
Save hydrastro/2a43117611f567d8d140c2bc55e9263d to your computer and use it in GitHub Desktop.
syscall.S
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* Copyright (C) 2001-2018 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #include <sysdep.h> | |
| /* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for | |
| more information about the value -4095 used below. */ | |
| /* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5, arg6) | |
| We need to do some arg shifting, the syscall_number will be in | |
| rax. */ | |
| .text | |
| ENTRY (syscall) | |
| movq %rdi, %rax /* Syscall number -> rax. */ | |
| movq %rsi, %rdi /* shift arg1 - arg5. */ | |
| movq %rdx, %rsi | |
| movq %rcx, %rdx | |
| movq %r8, %r10 | |
| movq %r9, %r8 | |
| movq 8(%rsp),%r9 /* arg6 is on the stack. */ | |
| syscall /* Do the system call. */ | |
| cmpq $-4095, %rax /* Check %rax for error. */ | |
| jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */ | |
| ret /* Return to caller. */ | |
| PSEUDO_END (syscall) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment