New version adapted from m68k4 version.
+
.define _signal
.extern _signal
NSIG=32
_signal:
move.w 4(sp), d0
- ext.l d0
+ ext.l d0
cmp.l #NSIG,d0
bcc 1f
move.l 6(sp),d1
beq 2f
btst #0,d1
bne 2f
- move.l #enter,d1
+ move.l #jmptab,d1
+ add.l d0,d1
+ add.l d0,d1
2:
move.l d0,a0
move.w #0x30,d0
bne 4f
move.l a1,d0
4:
+ clr.l d1
rts
1:
move.l #22,d0
3:
jmp cerror
+jmptab: bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
+ bsr enter
enter:
movem.l d0/d1/a0/a1,-(sp)
- move.l 16(sp),a0
- move.l a0,-(sp)
+ move.l 16(sp),d0
+ sub.l #jmptab+2,d0
+ asr.l #1,d0
+ move.l d0,-(sp)
+ move.l d0,a0
add.l a0,a0
add.l a0,a0
add.l #dvect,a0