| Commit message (Expand) | Author | Files | Lines |
| 2012-09-13 | strsep is BSD|GNU, not GNU-only; it's originally from BSD | Rich Felker | 1 | -1/+4 |
| 2012-09-13 | add O_PATH/O_SEARCH support to fcntl.h•••I'm not 100% sure that Linux's O_PATH meets the POSIX requirements for
O_SEARCH, but it seems very close if not perfect. and old kernels
ignore it, so O_SEARCH will still work as desired as long as the
caller has read permissions to the directory.
| Rich Felker | 5 | -1/+9 |
| 2012-09-11 | improve mips syscall asm constraints to use immediates, if possible•••by using the "ir" constraint (immediate or register) and the carefully
constructed instruction addu $2,$0,%2 which can take either an
immediate or a register for %2, the new inline asm admits maximal
optimization with no register spillage to the stack when the compiler
successfully performs constant propagration, but still works by
allocating a register when the syscall number cannot be recognized as
a constant. in the case of syscalls with 0-3 arguments it barely
matters, but for 4-argument syscalls, using an immediate for the
syscall number avoids creating a stack frame for the syscall wrapper
function.
| Rich Felker | 1 | -12/+21 |
| 2012-09-10 | eliminate assumption that mips syscall restart preserves r25•••all past and current kernel versions have done so, but there seems to
be no reason it's necessary and the sentiment from everyone I've asked
has been that we should not rely on it. instead, use r7 (an argument
register) which will necessarily be preserved upon syscall restart.
however this only works for 0-3 argument syscalls, and we have to
resort to the function call for 4-argument syscalls.
| Rich Felker | 1 | -23/+12 |
| 2012-09-10 | asm for memmove on i386 and x86_64•••for the sake of simplicity, I've only used rep movsb rather than
breaking up the copy for using rep movsd/q. on all modern cpus, this
seems to be fine, but if there are performance problems, there might
be a need to go back and add support for rep movsd/q.
| Rich Felker | 2 | -0/+36 |
| 2012-09-10 | fix another ppoll issue (missing sigset_t size argument) | Rich Felker | 1 | -1/+1 |
| 2012-09-10 | reenable word-at-at-time copying in memmove•••before restrict was added, memove called memcpy for forward copies and
used a byte-at-a-time loop for reverse copies. this was changed to
avoid invoking UB now that memcpy has an undefined copying order,
making memmove considerably slower.
performance is still rather bad, so I'll be adding asm soon.
| Rich Felker | 1 | -4/+27 |
| 2012-09-10 | fix ppoll with null timeout argument | Rich Felker | 1 | -2/+2 |
| 2012-09-10 | add LIBCC (compiler runtime) logic and override to configure•••this should both fix the issue with ARM needing -lgcc_eh (although
that's really a bug in the libgcc build process that's causing
considerable bloat, which should be fixed) and make it easier to build
musl using clang/llvm in place of gcc. unfortunately I don't know a
good way to detect and support pcc's -lpcc since it's not in pcc's
default library search path...
| Rich Felker | 1 | -0/+7 |
| 2012-09-09 | add setdomainname syscall, fix getdomainname (previously a stub) | Rich Felker | 3 | -1/+18 |
| 2012-09-09 | mincore syscall wrapper | Rich Felker | 2 | -0/+9 |
| 2012-09-09 | fix up lfs64 junk for preadv/pwritev | Rich Felker | 3 | -2/+7 |
| 2012-09-09 | add preadv/pwritev syscall wrappers | Rich Felker | 3 | -0/+35 |
| 2012-09-09 | fix typo introduced in poll.h | Rich Felker | 1 | -1/+1 |
| 2012-09-09 | add linux ppoll syscall wrapper | Rich Felker | 2 | -0/+19 |
| 2012-09-09 | reenable sync_file_range; should no longer break on mips | Rich Felker | 1 | -2/+2 |
| 2012-09-09 | add 7-arg syscall support for mips•••no syscalls actually use that many arguments; the issue is that some
syscalls with 64-bit arguments have them ordered badly so that
breaking them into aligned 32-bit half-arguments wastes slots with
padding, and a 7th slot is needed for the last argument.
| Rich Felker | 2 | -4/+8 |
| 2012-09-09 | inline syscall support for arm•••most pure-syscall-wrapper functions compile to the smallest/simplest
code possible (save r7 ; load syscall # ; svc 0 ; restore r7 ; tail
call to __syscall_ret).
| Rich Felker | 1 | -0/+53 |
| 2012-09-09 | inline syscall support for mips•••this drastically reduces the size of some functions which are purely
syscall wrappers.
disabled for clang due to known bugs satisfying register constraints.
| Rich Felker | 1 | -0/+57 |
| 2012-09-09 | fix mips syscall_cp_asm code (saved register usage) | Rich Felker | 1 | -2/+2 |
| 2012-09-09 | fix broken mips syscall asm•••this code was using $10 to save the syscall number, but $10 is not
necessarily preserved by the kernel across syscalls. only mattered for
syscalls that got interrupted by a signal and restarted. as far as i
can tell, $25 is preserved by the kernel across syscalls.
| Rich Felker | 1 | -2/+2 |
| 2012-09-08 | disable sync_file_range for now•••something is wrong with the logic for the argument layout, resulting
in compile errors on mips due to too many args to syscall... further
information on how it's supposed to work will be needed before it can
be reactivated.
| Rich Felker | 1 | -2/+3 |
| 2012-09-08 | syscall organization overhaul•••now public syscall.h only exposes __NR_* and SYS_* constants and the
variadic syscall function. no macros or inline functions, no
__syscall_ret or other internal details, no 16-/32-bit legacy syscall
renaming, etc. this logic has all been moved to src/internal/syscall.h
with the arch-specific parts in arch/$(ARCH)/syscall_arch.h, and the
amount of arch-specific stuff has been reduced to a minimum.
changes still need to be reviewed/double-checked. minimal testing on
i386 and mips has already been performed.
| Rich Felker | 10 | -655/+420 |