ack/mach/pdp/libsys/signal.s

89 lines
999 B
ArmAsm
Raw Normal View History

1987-01-07 17:13:41 +00:00
#include "sys.h"
1987-05-14 17:45:41 +00:00
EINVAL = 026
.define _signal
.extern _errno
1987-01-07 17:13:41 +00:00
1987-05-14 17:45:41 +00:00
NSIGNALS = 024
1987-01-07 17:13:41 +00:00
tvect:
1987-05-14 17:45:41 +00:00
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
jsr r0,1f
1987-01-07 17:13:41 +00:00
1:
mov r1,-(sp)
mov r2,-(sp)
mov r3,-(sp)
mov r4,-(sp)
sub $tvect+4,r0
asr r0
mov r0,-(sp)
asr (sp)
jsr pc,*dvect(r0)
tst (sp)+
mov (sp)+,r4
mov (sp)+,r3
mov (sp)+,r2
mov (sp)+,r1
mov (sp)+,r0
rtt
_signal:
mov r5,-(sp)
mov sp,r5
mov 4(r5),r1
cmp r1,$NSIGNALS
bhis 2f
mov 6(r5),r0
mov r1,0f+2
asl r1
mov dvect(r1),-(sp)
mov r0,dvect(r1)
mov r0,0f+4
beq 1f
bit $1,r0
bne 1f
asl r1
add $tvect,r1
mov r1,0f+4
1:
1987-05-14 17:45:41 +00:00
sys indir; .data2 0f
bcs 3f
1987-01-07 17:13:41 +00:00
bit $1,r0
beq 1f
mov r0,(sp)
1:
mov (sp)+,r0
mov (sp)+,r5
rts pc
2:
1987-05-14 17:45:41 +00:00
mov $EINVAL,r0
1987-01-07 17:13:41 +00:00
3:
mov r0,_errno
mov $-1,r0
mov (sp)+,r5
rts pc
1987-05-14 17:45:41 +00:00
.sect .data
1987-01-07 17:13:41 +00:00
0:
1987-05-14 17:45:41 +00:00
sys signal
.data2 0, 0
.sect .bss
dvect: .space [NSIGNALS*2]