summaryrefslogtreecommitdiff
path: root/src/internal/i386
AgeCommit message (Collapse)AuthorFilesLines
2015-04-14fix inconsistent visibility for internal syscall symbolsRich Felker1-0/+1
2015-04-14use hidden visibility for i386 asm-internal __vsyscall symbolRich Felker1-0/+2
otherwise the call instruction in the inline syscall asm results in textrels without ld-time binding.
2012-11-11fix clobber of edx in i386 vsyscall asmRich Felker1-1/+2
this function does not obey the normal calling convention; like a syscall instruction, it's expected not to clobber any registers except the return value. clobbering edx could break callers that were reusing the value cached in edx after the syscall returns.
2012-10-11comment possibly-confusing i386 vsyscall asmRich Felker1-1/+13
2012-10-11i386 vsyscall support (vdso-provided sysenter/syscall instruction based)Rich Felker1-16/+58
this doubles the performance of the fastest syscalls on the atom I tested it on; improvement is reportedly much more dramatic on worst-case cpus. cannot be used for cancellable syscalls.
2011-06-14restore use of .type in asm, but use modern @function (vs %function)Rich Felker1-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 Felker1-2/+0
these are useless and have caused problems for users trying to build with non-gnu tools like tcc's assembler.
2011-03-19overhaul syscall interfaceRich Felker1-0/+21
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.