Commit Graph

8 Commits

Author SHA1 Message Date
Rich Felker
cffb9e1ee2 fix clobbering of caller's stack in mips __clone function
this was resulting in crashes in posix_spawn on mips, and would have
affected applications calling clone too. since the prototype for
__clone has it as a variadic function, it may not assume that 16($sp)
is writable for use in making the syscall. instead, it needs to
allocate additional stack space, and then adjust the stack pointer
back in both of the code paths for the parent process/thread.
2013-09-16 11:52:39 -04:00
Rich Felker
bfba15c9b9 fix child stack alignment on mips clone
unlike other archs, the mips version of clone was not doing anything
to align the stack pointer. this seems to have been the cause for some
SIGBUS crashes that were observed in posix_spawn.
2013-09-14 19:19:11 -04:00
Rich Felker
881868382a update mips cancellation-point syscall asm with 7-arg and r25 fixes
these fixes were already made to the normal syscall asm but not the
cancellation point version.
2012-09-15 02:24:12 -04:00
Rich Felker
be48e22b42 fix mips syscall_cp_asm code (saved register usage) 2012-09-09 00:59:30 -04:00
Rich Felker
a03f69d445 mips clone: don't free stack space used to copy arg
the mips abi reserves stack space equal to the size of the in-register
args for the callee to save the args, if desired. this would cause the
beginning of the thread structure to be clobbered...
2012-07-11 23:01:09 -04:00
Rich Felker
b58f738bcb fix mips clone() on real linux kernel
the old code worked in qemu app-level emulation, but not on real
kernels where the clone syscall does not copy the register values to
the new thread. save arguments on the new thread stack instead.
2012-07-11 22:59:43 -04:00
Rich Felker
715b6403ce fix clone() on mips (args were in wrong order)
with this change, threads on mips seem to be working
2012-07-11 20:44:38 -04:00
Rich Felker
5c94367a9b first attempt at making threads work on mips 2012-07-11 11:35:27 -04:00