Bug fixed: incorrect return value
authorbal <none@none>
Thu, 18 Apr 1985 15:12:29 +0000 (15:12 +0000)
committerbal <none@none>
Thu, 18 Apr 1985 15:12:29 +0000 (15:12 +0000)
New version adapted from m68k4 version.

mach/m68k2/libsys/signal.s

index 8f18c1f..90acbc5 100644 (file)
@@ -1,9 +1,10 @@
+
 .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
@@ -16,7 +17,9 @@ _signal:
        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
@@ -26,16 +29,52 @@ _signal:
        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