home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / pi0 / signal.s < prev    next >
Text File  |  1980-02-17  |  1KB  |  90 lines

  1. / C library -- signal
  2.  
  3. / signal(n, 0); /* default action on signal(n) */
  4. / signal(n, odd); /* ignore signal(n) */
  5. / signal(n, label); /* goto label on signal(n) */
  6. / returns old label, only one level.
  7.  
  8. rtt    = 6
  9. signal    = 48.
  10. .globl    _signal, cerror
  11.  
  12. _signal:
  13.     mov    r5,-(sp)
  14.     mov    sp,r5
  15.     mov    4(r5),r1
  16.     cmp    r1,$NSIG
  17.     bhis    2f
  18.     mov    6(r5),r0
  19.     mov    r1,0f
  20.     asl    r1
  21.     mov    dvect(r1),-(sp)
  22.     mov    r0,dvect(r1)
  23.     mov    r0,0f+2
  24.     beq    1f
  25.     bit    $1,r0
  26.     bne    1f
  27.     asl    r1
  28.     add    $tvect,r1
  29.     mov    r1,0f+2
  30. 1:
  31.     sys    0; 9f
  32.     bes    3f
  33.     bit    $1,r0
  34.     beq    1f
  35.     mov    r0,(sp)
  36. 1:
  37.     mov    (sp)+,r0
  38.     mov    (sp)+,r5
  39.     rts    pc
  40. 2:
  41.     mov    $22.,r0        / EINVAL
  42. 3:
  43.     jmp    cerror
  44.  
  45. NSIG = 0
  46. tvect:
  47.     jsr    r0,1f; NSIG=NSIG+1
  48.     jsr    r0,1f; NSIG=NSIG+1
  49.     jsr    r0,1f; NSIG=NSIG+1
  50.     jsr    r0,1f; NSIG=NSIG+1
  51. /    jsr    r0,1f; NSIG=NSIG+1
  52. /    jsr    r0,1f; NSIG=NSIG+1
  53. /    jsr    r0,1f; NSIG=NSIG+1
  54. /    jsr    r0,1f; NSIG=NSIG+1
  55. /    jsr    r0,1f; NSIG=NSIG+1
  56. /    jsr    r0,1f; NSIG=NSIG+1
  57. /    jsr    r0,1f; NSIG=NSIG+1
  58. /    jsr    r0,1f; NSIG=NSIG+1
  59. /    jsr    r0,1f; NSIG=NSIG+1
  60. /    jsr    r0,1f; NSIG=NSIG+1
  61. /    jsr    r0,1f; NSIG=NSIG+1
  62. /    jsr    r0,1f; NSIG=NSIG+1
  63. /    jsr    r0,1f; NSIG=NSIG+1
  64. /    jsr    r0,1f; NSIG=NSIG+1
  65. /    jsr    r0,1f; NSIG=NSIG+1
  66. /    jsr    r0,1f; NSIG=NSIG+1
  67.  
  68. 1:
  69.     mov    r1,-(sp)
  70.     mov    r2,-(sp)
  71.     mov    r3,-(sp)
  72.     mov    r4,-(sp)
  73.     sub    $tvect+4,r0
  74.     asr    r0
  75.     mov    r0,-(sp)
  76.     asr    (sp)
  77.     jsr    pc,*dvect(r0)
  78.     tst    (sp)+
  79.     mov    (sp)+,r4
  80.     mov    (sp)+,r3
  81.     mov    (sp)+,r2
  82.     mov    (sp)+,r1
  83.     mov    (sp)+,r0
  84.     rtt
  85. .data
  86. 9:
  87.     sys    signal; 0:..; ..
  88. .bss
  89. dvect:    .=.+[NSIG*2]
  90.