1 /* signal.c 4.2 85/01/15 */ 2 /* 3 * Almost backwards compatible signal. 4 * int (*signal(s, a))() int s, (*a)(); 5 */ 6 #include <syscall.h> 7 #include "DEFS.h" 8 9 ENTRY(signal, 0) 10 subl2 $24,sp # struct sigvec osv, sv; 11 movl 8(ap),-24(fp) # sv.sv_handler = a; 12 clrq -20(fp) # sv.sv_mask = sv.sv_onstack = 0; 13 pushal -12(fp) # &osv 14 pushal -24(fp) # &sv 15 pushl 4(ap) # s 16 moval -4(sp),ap 17 chmk $SYS_sigvec # sigvec(s, &sv, &osv) 18 jcs err 19 movl -12(fp),r0 # return osv.sv_handler; 20 ret 21 err: 22 .globl _errno 23 movl r0,_errno 24 mnegl $1,r0 25 ret 26