musl/arch/mips
Rich Felker f61be1f875 fix mips struct stat dev_t members for big endian
the mips version of this structure on the kernel side wrongly has
32-bit type rather than 64-bit type. fortunately there is adjacent
padding to bring it up to 64 bits, and on little-endian, this allows
us to treat the adjacent kernel st_dev and st_pad0[0] as as single
64-bit dev_t. however, on big endian, such treatment results in the
upper and lower 32-bit parts of the dev_t value being swapped. for the
purpose of just comparing st_dev values this did not break anything,
but it precluded actually processing the device numbers as major/minor
values.

since the broken kernel behavior that needs to be worked around is
isolated to one arch, I put the workarounds in syscall_arch.h rather
than adding a stat fixup path in the common code. on little endian
mips, the added code optimizes out completely.

the changes necessary were incompatible with the way the __asm_syscall
macro was factored so I just removed it and flattened the individual
__syscallN functions. this arguably makes the code easier to read and
understand, anyway.
2014-07-19 23:37:21 -04:00
..
bits add sched_{get,set}attr syscall numbers and SCHED_DEADLINE macro 2014-05-30 13:06:51 -04:00
atomic.h fix missing barrier instructions in mips atomic asm 2014-07-19 15:51:12 -04:00
crt_arch.h new mostly-C crt1 implementation 2013-07-26 01:49:14 -04:00
ksigaction.h add some comments about the mips ksigaction structure weirdness 2013-06-29 12:24:06 -04:00
pthread_arch.h add support for TLS variant I, presently needed for arm and mips 2012-10-15 18:51:53 -04:00
reloc.h fix regression in mips dynamic linker 2014-06-30 01:18:14 -04:00
syscall_arch.h fix mips struct stat dev_t members for big endian 2014-07-19 23:37:21 -04:00