summaryrefslogtreecommitdiff
path: root/src/thread/powerpc
AgeCommit message (Collapse)AuthorLines
2016-04-25fix thread structure/dtv-pointer corruption on powerpcRich Felker-0/+5
per the powerpc psabi, offset 4 of the stack at call time belongs to the callee and is used for spilling lr (return address). in addition, offset 0 on the stack must contain a pointer to the previous stack frame, or a null pointer for the initial stack frame of a thread. __clone failed to setup any stack frame on the new thread's stack, thereby allowing the start function it called to clobber offset 4 of the new thread's struct __pthread, which contains the dtv pointer. add code to setup a proper stack frame and align the stack pointer to a multiple of 16 (also an abi requirement) if it was not already aligned.
2015-11-02use explicit __cp_cancel label in cancellable syscall asm for all archsRich Felker-1/+3
previously, only archs that needed to do stack cleanup defined a __cp_cancel label for acting on cancellation in their syscall asm, and a default definition was provided by a weak alias to __cancel, the C function. this resulted in wrong codegen for arm on gcc versions affected by pr 68178 and possibly similar issues (like pr 66609) on other archs, and also created an inconsistency where the __cp_begin and __cp_end labels were treated as const data but __cp_cancel was treated as a function. this in turn caused incorrect code generation on archs where function pointers point to function descriptors rather than code (for now, only sh/fdpic).
2015-04-14consistently use hidden visibility for cancellable syscall internalsRich Felker-3/+10
in a few places, non-hidden symbols were referenced from asm in ways that assumed ld-time binding. while these is no semantic reason these symbols need to be hidden, fixing the references without making them hidden was going to be ugly, and hidden reduces some bloat anyway. in the asm files, .global/.hidden directives have been moved to the top to unclutter the actual code.
2015-02-20prepare cancellation syscall asm for possibility of __cancel returningRich Felker-1/+0
2012-11-19powerpc: handle syscall error in clone.rofl0r-25/+9
sigsetjmp: store temporaries in jmp_buf rather than on stack.
2012-11-18fix powerpc asm not to store data in volatile space below stack pointerRich Felker-4/+4
it's essential to decrement the stack pointer before writing to new stack space, rather than afterwards. otherwise there is a race condition during which asynchronous code (signals) could clobber the data being stored. it may be possible to optimize the code further using stwu, but I wanted to avoid making any changes to the actual stack layout in this commit. further improvements can be made separately if desired.
2012-11-14fix indention with spaces in powerpc asmRich Felker-8/+8
2012-11-13PPC port cleaned up, static linking works well now.rofl0r-0/+154