12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "sys.h"
- EINVAL = 026
- .define _signal
- .extern _errno
- NSIGNALS = 024
- tvect:
- 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
- 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:
- sys indir; .data2 0f
- bcs 3f
- bit $1,r0
- beq 1f
- mov r0,(sp)
- 1:
- mov (sp)+,r0
- mov (sp)+,r5
- rts pc
- 2:
- mov $EINVAL,r0
- 3:
- mov r0,_errno
- mov $-1,r0
- mov (sp)+,r5
- rts pc
- .sect .data
- 0:
- sys signal
- .data2 0, 0
- .sect .bss
- dvect: .space [NSIGNALS*2]
|