summaryrefslogtreecommitdiff
path: root/src/thread/powerpc/clone.s
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.
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-13PPC port cleaned up, static linking works well now.rofl0r-0/+83