Pristine Ack-5.5
[Ack-5.5.git] / mach / mantra / int / mloopb
1 .sect .text
2 .sect .rom
3 .sect .data
4 .sect .bss
5 .sect .text
6 _sigtrp:        move.l  (sp)+,d2        !save return address
7                 mov     (sp)+,d1        !trapno in d1
8                 mov     (sp)+,d4        !signo in d4
9                 extend  d4
10                 extend  d1
11                 comp    #16,d4
12                 bhi     sig_bad
13                 tst.l   d4
14                 beq     sig_bad
15                 move.l  d4,a0
16                 add.l   a0,a0
17                 add.l   a0,a0
18                 move.l  #sig_trp-4,a1
19                 add.l   a0,a1
20                 move.l  (a1),d2         !previous trap number in d2
21                 comp    #256,d1         !-2 and -1 special
22                 bcc     1f
23                 add.l   #sig_adr-4,a0
24                 move.l  (a0),d3         !Get the pointer to the trap- 
25                 bne     2f              !procedure to give as argument to
26 sig_bad:        mov     #22,-(sp)       !_Xsignal. If pointer 0 trapping is
27                 mov     #22,-(sp)       !not legal
28                 jmp     (a4)
29 1:              comp    #-3,d1          !-2:reset default , -3: ignore
30                 bmi     sig_bad
31                 move.l  d1,d3
32                 ad      #2,d3           !0:reset default for signal, -1: ignore
33 2:              move.l  d1,(a1)         !set new trapno
34                 move.l  d3,-(sp)                !set arguments to signal:
35                 mov     d4,-(sp)                !pointer ,signo to be trapped
36                 bsr     _Xsignal
37                 jmp     (a4)
38         .sect .data
39 sig_adr:        .data4  sig1 ;  .data4  sig2 ;  .data4 sig3 ;   .data4  0
40                 .data4  0 ;     .data4  0 ;     .data4 0 ;      .data4  0
41                 .data4  0 ;     .data4  sig10 ; .data4 sig11 ;  .data4  sig12
42                 .data4  sig13 ; .data4  sig14 ; .data4 sig15 ;  .data4  sig16
43 sig_trp:        .data4  -2  ;   .data4  -2  ;   .data4  -2  ;   .data4  -2  
44                 .data4  -2  ;   .data4  -2  ;   .data4  -2  ;   .data4  -2  
45                 .data4  -2  ;   .data4  22  ;   .data4  21  ;   .data4  25  
46                 .data4  -2  ;   .data4  -2  ;   .data4  -2  ;   .data4  -2  
47         .sect .text
48 !the next procedures map the catched signal to em errors. The em error
49 !procedure will handle this.
50 sig1:           pea     retutrap
51 #ifdef __BSD4_2
52                 jsr     setmask
53 #endif
54                 move.l  sig_trp,d0
55                 mov     d0,-(sp)
56                 bra     error
57 sig2:           pea     retutrap
58 #ifdef __BSD4_2
59                 jsr     setmask
60 #endif
61                 move.l  sig_trp+4,d0
62                 mov     d0,-(sp)
63                 bra     error
64 sig3:           pea     retutrap
65 #ifdef __BSD4_2
66                 jsr     setmask
67 #endif
68                 move.l  sig_trp+8,d0
69                 mov     d0,-(sp)
70                 bra     error
71 sig8:           pea     retutrap
72 #ifdef __BSD4_2
73                 jsr     setmask
74 #endif
75                 move.l  sig_trp+28,d0
76                 mov     d0,-(sp)
77                 bra     error
78 sig13:          pea     retutrap
79 #ifdef __BSD4_2
80                 jsr     setmask
81 #endif
82                 move.l  sig_trp+48,d0
83                 mov     d0,-(sp)
84                 bra     error
85 sig14:          pea     retutrap
86 #ifdef __BSD4_2
87                 jsr     setmask
88 #endif
89                 move.l  sig_trp+52,d0
90                 mov     d0,-(sp)
91                 bra     error
92 sig15:          pea     retutrap
93 #ifdef __BSD4_2
94                 jsr     setmask
95 #endif
96                 move.l  sig_trp+56,d0
97                 mov     d0,-(sp)
98                 bra     error
99 sig16:          pea     retutrap
100 #ifdef __BSD4_2
101                 jsr     setmask
102 #endif
103                 move.l  sig_trp+60,d0
104                 mov     d0,-(sp)
105                 bra     error
106 retutrap:       add.l   #4,sp           !remove signumber
107                 rtr
108
109 sig12:          pea     sig12
110 #ifdef __BSD4_2
111                 jsr     setmask
112 #endif
113                 mov     #12,-(sp)
114                 bsr     _Xsignal
115                 bsr     e_badmon
116                 rtr
117 sig11:
118 #ifdef __BSD4_2
119                 jsr     setmask
120 #endif          
121                 bra     e_memflt
122 sig10:
123 #ifdef __BSD4_2
124                 jsr     setmask
125 #endif          
126                 bra     e_badptr
127
128 #ifdef __BSD4_2
129 setmask:
130                 move.l  mask,-(sp)
131                 jsr     _sigsetmask
132                 add.l   #4,sp
133                 rts
134
135 getmask:
136                 clr.l   -(sp)
137                 jsr     _sigblock
138                 add.l   #4,sp
139                 move.l  d0,mask
140                 rts
141
142 .sect .data
143 mask:   
144         .data4 0
145 #endif