musl/arch
Rich Felker 5053fd2644 revert mips64/n32 syscall asm clean-up due to regressions
effectivly revert commit ddc7c4f936
which was wrong; it caused a major regression on Linux versions prior
to 2.6.36. old kernels did not properly preserve r2 across syscall
restart, and instead restarted with the instruction right before
syscall, imposing a contract that the previous instruction must load
r2 from an immediate or a register (or memory) not clobbered by the
syscall.

since other changes were made since, including removal of the struct
stat conversion that was replaced by separate struct kstat, this is
not a direct revert, only a functional one.

the "0"(r2) input constraint added back seems useless/erroneous, but
without it most gcc versions (seems to be all prior to 9.x) fail to
honor the output register binding for r2. this seems to be a variant
of gcc bug #87733. further changes should be made later if a better
workaround is found, but this one has been working since 2012. it
seems this issue was encountered but misidentified then, when it
inspired commit 4221f154ff.
2020-03-14 21:21:45 -04:00
..
aarch64 add clone3 syscall number from linux v5.3 2019-12-30 18:13:56 -05:00
arm remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
generic move struct dirent to bits header, allow NAME_MAX to vary 2020-01-25 23:08:55 -05:00
i386 remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
m68k remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
microblaze remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
mips remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
mips64 revert mips64/n32 syscall asm clean-up due to regressions 2020-03-14 21:21:45 -04:00
mipsn32 revert mips64/n32 syscall asm clean-up due to regressions 2020-03-14 21:21:45 -04:00
or1k remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
powerpc remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
powerpc64 add clone3 syscall number from linux v5.3 2019-12-30 18:13:56 -05:00
riscv64 move riscv64 register index constants to signal.h 2020-02-04 09:29:13 -05:00
s390x add clone3 syscall number from linux v5.3 2019-12-30 18:13:56 -05:00
sh remove legacy time32 timer[fd] syscalls from public syscall.h 2020-02-05 09:57:41 -05:00
x32 add clone3 syscall number from linux v5.3 2019-12-30 18:13:56 -05:00
x86_64 add clone3 syscall number from linux v5.3 2019-12-30 18:13:56 -05:00