X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fsignal%2Fpowerpc%2Fsigsetjmp.s;h=152c3fedd7a84ac0dceffcb6cb8ab202d21cd5ee;hb=91d34c4533e6bf6eacad7a9f001f28f9e5ebc656;hp=0b79dcce54caa1a3966a739d348e6cb49a65c6b0;hpb=c6d441e3a246370d9c459396ec22b096db93850e;p=musl diff --git a/src/signal/powerpc/sigsetjmp.s b/src/signal/powerpc/sigsetjmp.s index 0b79dcce..152c3fed 100644 --- a/src/signal/powerpc/sigsetjmp.s +++ b/src/signal/powerpc/sigsetjmp.s @@ -1,34 +1,27 @@ - .global sigsetjmp - .type sigsetjmp,%function + .global sigsetjmp + .global __sigsetjmp + .type sigsetjmp,%function + .type __sigsetjmp,%function sigsetjmp: - #int sigsetjmp(sigjmp_buf buf, int save) - # r3 r4 - #0) store save into buf->__fl - stw 4, 256(3) - #1) compare save with 0 +__sigsetjmp: cmpwi cr7, 4, 0 - #2) if its 0, goto setjmp code beq- cr7, 1f - #3) else: we must call pthread_sigmask(SIG_SETMASK, 0, (sigset_t *)buf->__ss); - # thus store r3 on the stack, to restore it later - stw 3, -4(1) - # store old link reg - mflr 0 - stw 0, -8(1) - # increase stack frame by 16 - subi 1, 1, 16 - # put pointer to ss buf into r5 (3rd arg) - addi 5, 3, 260 - # put "2" i.e. SIG_SETMASK in r3 - li 3, 2 - li 4, 0 - bl pthread_sigmask - #restore sp - addi 1, 1, 16 - #restore r3 - lwz 3, -4(1) - #restore link reg - lwz 0, -8(1) - mtlr 0 -1: - b setjmp + + mflr 5 + stw 5, 448(3) + stw 16, 448+4+8(3) + mr 16, 3 + +.hidden ___setjmp + bl ___setjmp + + mr 4, 3 + mr 3, 16 + lwz 5, 448(3) + mtlr 5 + lwz 16, 448+4+8(3) + +.hidden __sigsetjmp_tail + b __sigsetjmp_tail + +1: b ___setjmp