X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fsignal%2Fpowerpc%2Fsigsetjmp.s;h=152c3fedd7a84ac0dceffcb6cb8ab202d21cd5ee;hb=cf1a9d9d16a79322df15b344a2617b79ebb12705;hp=81f5a40ea2bc539b3f73dbc53afbdd89eea4779c;hpb=8bb181622222f2ee3462c8b021bcae4fcdbbd37a;p=musl diff --git a/src/signal/powerpc/sigsetjmp.s b/src/signal/powerpc/sigsetjmp.s index 81f5a40e..152c3fed 100644 --- a/src/signal/powerpc/sigsetjmp.s +++ b/src/signal/powerpc/sigsetjmp.s @@ -1,34 +1,27 @@ .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