1/* sigprocmask(int how, const sigset_t *set, sigset_t *oset); */ 2 3#include "SYS.h" 4 5 .text 6PREFIX(sigprocmask) 7 stwu 1, -16(1) 8 stw 5, 12(1) 9 10 /* check set (new mask value) for null, in which case 11 fiddle arguments */ 12 cmpwi 4, 0 13 bne+ .L_load_set 14 addi 3, 0, 1 /* how = SIG_BLOCK, new mask already 0 */ 15 b .L_do_call 16.L_load_set: 17 lwz 4, 0(4) /* get new mask */ 18.L_do_call: 19 20 sc 21 22 /* didnt work? */ 23 cmpwi 0, 0 24 beq+ .L_sigprocmask_ok 25 b PIC_PLT(_ASM_LABEL(cerror)) 26 27.L_sigprocmask_ok: 28 lwz 5, 12(1) 29 cmpwi 5, 0 30 beq+ .L_sigprocmask_done 31 stw 3, 0(5) 32.L_sigprocmask_done: 33 addi 1, 1, 16 34 blr 35