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