summaryrefslogtreecommitdiff
path: root/src/internal/x86_64/syscall.s
AgeCommit message (Collapse)AuthorLines
2019-04-10remove external __syscall function and last remaining usersRich Felker-13/+0
the weak version of __syscall_cp_c was using a tail call to __syscall to avoid duplicating the 6-argument syscall code inline in small static-linked programs, but now that __syscall no longer exists, the inline expansion is no longer duplication. the syscall.h machinery suppported up to 7 syscall arguments, only via an external __syscall function, but we presently have no syscall call points that actually make use of that many, and the kernel only defines 7-argument calling conventions for arm, powerpc (32-bit), and sh. if it turns out we need them in the future, they can easily be added.
2015-04-14fix inconsistent visibility for internal syscall symbolsRich Felker-0/+1
2011-06-14restore use of .type in asm, but use modern @function (vs %function)Rich Felker-0/+1
this seems to be necessary to make the linker accept the functions in a shared library (perhaps to generate PLT entries?) strictly speaking libc-internal asm should not need it. i might clean that up later.
2011-06-13remove all .size and .type directives for functions from the asmRich Felker-2/+0
these are useless and have caused problems for users trying to build with non-gnu tools like tcc's assembler.
2011-03-19remove comment cruft that got left behind in x86_64 syscall.sRich Felker-1/+0
2011-03-19overhaul syscall interfaceRich Felker-0/+14
this commit shuffles around the location of syscall definitions so that we can make a syscall() library function with both SYS_* and __NR_* style syscall names available to user applications, provides the syscall() library function, and optimizes the code that performs the actual inline syscalls in the library itself. previously on i386 when built as PIC (shared library), syscalls were incurring bus lock (lock prefix) overhead at entry and exit, due to the way the ebx register was being loaded (xchg instruction with a memory operand). now the xchg takes place between two registers. further cleanup to arch/$(ARCH)/syscall.h is planned.