about summary refs log tree commit diff
path: root/src/thread/powerpc/clone.s
Commit message (Collapse)AuthorAgeFilesLines
* make arch __clone backends hiddenRich Felker2018-09-121-0/+1
| | | | | these are not a public interface and are not intended to be callable from anywhere but the public clone function or other places in libc.
* fix thread structure/dtv-pointer corruption on powerpcRich Felker2016-04-251-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.
* powerpc: handle syscall error in clone.rofl0r2012-11-191-25/+9
| | | | sigsetjmp: store temporaries in jmp_buf rather than on stack.
* fix powerpc asm not to store data in volatile space below stack pointerRich Felker2012-11-181-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.
* PPC port cleaned up, static linking works well now.rofl0r2012-11-131-0/+83