|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000190 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _div_by_0_test
6: 6 00000000 _div_by_0_test:
7: 7 0000D920 0000 .word L381
8: 8 0000D922 #
9: 9 0000D922 # #include "evt_defs.h"
10: 10 0000D922 #
11: 11 0000D922 # /*
12: 12 0000D922 # ********************************************************************
13: 13 0000D922 # *
14: 14 0000D922 # * MONITOR FOR THE FPP DIVIDE BY ZERO EVENT TEST
15: 15 0000D922 # *
16: 16 0000D922 # * 26-Mar-85 JJM: written
17: 17 0000D922 # *
18: 18 0000D922 # ********************************************************************
19: 19 0000D922 # */
20: 20 0000D922 # div_by_0_test()
21: 21 0000D922 # {
22: 22 0000D922 13 00a1 jbr L383
23: 23 0000D925 L384:
24: 24 0000D925 # event_msg = "Divide By ZERO";
25: 25 0000D925 .data 1
26: 26 00000190 * L385:
27: 27 00000190 * 446976696465204279205A455 .ascii "Divide By ZERO\0"
28: 24F00
29: 28 0000019f * .text
30: 29 0000D925 0d 8f00000190 effffffff0 movl $L385,_event_msg
31: 30 0000D930 # test_event = ARITH_CODE; /* expect an arithmetic fault */
32: 31 0000D930 0d 34 efffffffe9 movl $52,_test_event
33: 32 0000D937 # exp_code = FLT_0_DIV_CODE; /* -specificly divide by 0 */
34: 33 0000D937 0d 03 efffffffe2 movl $3,_exp_code
35: 34 0000D93E # disable_mask = 0; /* don't disable any events */
36: 35 0000D93E 4b efffffffdc clrw _disable_mask
37: 36 0000D944 # evt_disabled = FALSE; /* expected event is enabled */
38: 37 0000D944 4d efffffffd6 clrl _evt_disabled
39: 38 0000D94A # if( evt_inst ) /* was the op-code specified? */
40: 39 0000D94A 5d efffffffd0 tstl _evt_inst
41: 40 0000D950 31 65 jeql L386
42: 41 0000D952 # {
43: 42 0000D952 # if( evt_inst == DIVF_OP_CODE )
44: 43 0000D952 1d efffffffc8 8900f6 cmpl _evt_inst,$246
45: 44 0000D95B 21 09 jneq L387
46: 45 0000D95D # run_divf(); /* test the DIVF instruction */
47: 46 0000D95D fe 04 ef00000066 callf $4,_run_divf
48: 47 0000D964 # else if( evt_inst == DIVD_OP_CODE )
49: 48 0000D964 11 4f jbr L389
50: 49 0000D966 L387:
51: 50 0000D966 1d efffffffb4 8900f7 cmpl _evt_inst,$247
52: 51 0000D96F 21 09 jneq L390
53: 52 0000D971 # run_divd(); /* test the DIVD instruction */
54: 53 0000D971 fe 04 ef000000c4 callf $4,_run_divd
55: 54 0000D978 # else if( (prt_hdrs) && (cycle == 1) )
56: 55 0000D978 11 3b jbr L392
57: 56 0000D97A L390:
58: 57 0000D97A 5d efffffffa0 tstl _prt_hdrs
59: 58 0000D980 31 33 jeql L393
60: 59 0000D982 1d efffffff98 01 cmpl _cycle,$1
61: 60 0000D989 21 2a jneq L393
62: 61 0000D98B # {
63: 62 0000D98B # writes("There are no DIVIDE BY ZERO faults with op-code ");
64: 63 0000D98B .data 1
65: 64 0000019f * L395:
66: 65 0000019f * 546865726520617265206E6F2 .ascii "There are no DIVIDE BY ZERO faults with op-code \0"
67: 0444956494445204259205A45
68: 524F206661756C74732077697
69: 468206F702D636F64652000
70: 66 000001d0 * .text
71: 67 0000D98B dd 8f0000019f pushl $L395
72: 68 0000D991 fe 08 efffffff88 callf $8,_writes
73: 69 0000D998 # writeh( evt_inst ); /* print the ersatz op-code */
74: 70 0000D998 dd efffffff82 pushl _evt_inst
75: 71 0000D99E fe 08 efffffff7b callf $8,_writeh
76: 72 0000D9A5 # writec('\n');
77: 73 0000D9A5 dd 0a pushl $10
78: 74 0000D9A7 fe 08 efffffff72 callf $8,_writec
79: 75 0000D9AE # error = TRUE; /* needed for line feed control */
80: 76 0000D9AE 0d 01 efffffff6b movl $1,_error
81: 77 0000D9B5 # }
82: 78 0000D9B5 # }
83: 79 0000D9B5 L393:
84: 80 0000D9B5 L392:
85: 81 0000D9B5 L389:
86: 82 0000D9B5 # else /* test both DIVF and DIVD */
87: 83 0000D9B5 11 0e jbr L398
88: 84 0000D9B7 L386:
89: 85 0000D9B7 # {
90: 86 0000D9B7 # run_divf(); /* test the DIVF instruction */
91: 87 0000D9B7 fe 04 ef0000000c callf $4,_run_divf
92: 88 0000D9BE # run_divd(); /* test the DIVD instruction */
93: 89 0000D9BE fe 04 ef00000077 callf $4,_run_divd
94: 90 0000D9C5 # }
95: 91 0000D9C5 L398:
96: 92 0000D9C5 # }
97: 93 0000D9C5 40 ret#2
98: 94 0000D9C6 .set L381,0x0
99: 95 0000D9C6 L383:
100: 96 0000D9C6 13 ff5c jbr L384
101: 97 0000D9C9 .data
102: 98 00000190 * .text
103: 99 0000D9C9 00 .align 1
104: 100 0000D9CA .globl _run_divf
105: 101 0000D9CA _run_divf:
106: 102 0000D9CA 0000 .word L399
107: 103 0000D9CC #
108: 104 0000D9CC #
109: 105 0000D9CC #
110: 106 0000D9CC #
111: 107 0000D9CC # /*
112: 108 0000D9CC # **********************************************************************
113: 109 0000D9CC # *
114: 110 0000D9CC # * SET UP TO TEST DIVIDE BY ZERO WITH THE DIVF INSTRUCTION
115: 111 0000D9CC # *
116: 112 0000D9CC # **********************************************************************
117: 113 0000D9CC # */
118: 114 0000D9CC # run_divf()
119: 115 0000D9CC # {
120: 116 0000D9CC 11 6c jbr L401
121: 117 0000D9CE L402:
122: 118 0000D9CE # op_code = DIVF_OP_CODE; /* set the inst's op_code */
123: 119 0000D9CE 0d 8900f6 efffffff49 movl $246,_op_code
124: 120 0000D9D7 # op_name = "DIVF "; /* set the inst's name */
125: 121 0000D9D7 .data 1
126: 122 000001d0 * L403:
127: 123 000001d0 * 444956462000 .ascii "DIVF \0"
128: 124 000001d6 * .text
129: 125 0000D9D7 0d 8f000001d0 efffffff3e movl $L403,_op_name
130: 126 0000D9E2 # precision = SGL;
131: 127 0000D9E2 0d 01 efffffff37 movl $1,_precision
132: 128 0000D9E9 # acc_ld_size = SGL; /* load a single precision Acc. */
133: 129 0000D9E9 0d 01 efffffff30 movl $1,_acc_ld_size
134: 130 0000D9F0 # sgl_op = TRUE;
135: 131 0000D9F0 0d 01 efffffff29 movl $1,_sgl_op
136: 132 0000D9F7 # valid_test = TRUE; /* we're running a test */
137: 133 0000D9F7 0d 01 efffffff22 movl $1,_valid_test
138: 134 0000D9FE # data_ptr = zero_divide_data; /* set the data ptr */
139: 135 0000D9FE 0d 8f00000000 efffffff17 movl $_zero_divide_data,_data_ptr
140: 136 0000DA09 # max_index = zero_divide_cnt; /* set the max index */
141: 137 0000DA09 0d efffffff11 efffffff0c movl _zero_divide_cnt,_max_index
142: 138 0000DA14 # if( (prt_hdrs) && (cycle == 1) )
143: 139 0000DA14 5d efffffff06 tstl _prt_hdrs
144: 140 0000DA1A 31 16 jeql L404
145: 141 0000DA1C 1d effffffefe 01 cmpl _cycle,$1
146: 142 0000DA23 21 0d jneq L404
147: 143 0000DA25 # writes( op_name );
148: 144 0000DA25 dd effffffef5 pushl _op_name
149: 145 0000DA2B fe 08 effffffeee callf $8,_writes
150: 146 0000DA32 # test_inst();
151: 147 0000DA32 L404:
152: 148 0000DA32 fe 04 effffffee7 callf $4,_test_inst
153: 149 0000DA39 # }
154: 150 0000DA39 40 ret#2
155: 151 0000DA3A .set L399,0x0
156: 152 0000DA3A L401:
157: 153 0000DA3A 11 92 jbr L402
158: 154 0000DA3C .data
159: 155 00000190 * .text
160: 156 0000DA3C .align 1
161: 157 0000DA3C .globl _run_divd
162: 158 0000DA3C _run_divd:
163: 159 0000DA3C 0000 .word L406
164: 160 0000DA3E #
165: 161 0000DA3E #
166: 162 0000DA3E #
167: 163 0000DA3E # /*
168: 164 0000DA3E # **********************************************************************
169: 165 0000DA3E # *
170: 166 0000DA3E # * SET UP TO TEST DIVIDE BY ZERO WITH THE DIVD INSTRUCTION
171: 167 0000DA3E # *
172: 168 0000DA3E # **********************************************************************
173: 169 0000DA3E # */
174: 170 0000DA3E # run_divd()
175: 171 0000DA3E # {
176: 172 0000DA3E 11 6b jbr L408
177: 173 0000DA40 L409:
178: 174 0000DA40 # op_code = DIVD_OP_CODE; /* set the inst's op_code */
179: 175 0000DA40 0d 8900f7 effffffed7 movl $247,_op_code
180: 176 0000DA49 # op_name = "DIVD "; /* set the inst's name */
181: 177 0000DA49 .data 1
182: 178 000001d6 * L410:
183: 179 000001d6 * 444956442000 .ascii "DIVD \0"
184: 180 000001dc * .text
185: 181 0000DA49 0d 8f000001d6 effffffecc movl $L410,_op_name
186: 182 0000DA54 # precision = DBL;
187: 183 0000DA54 0d 02 effffffec5 movl $2,_precision
188: 184 0000DA5B # acc_ld_size = DBL; /* load a double precision Acc. */
189: 185 0000DA5B 0d 02 effffffebe movl $2,_acc_ld_size
190: 186 0000DA62 # sgl_op = FALSE;
191: 187 0000DA62 4d effffffeb8 clrl _sgl_op
192: 188 0000DA68 # valid_test = TRUE; /* we're running a test */
193: 189 0000DA68 0d 01 effffffeb1 movl $1,_valid_test
194: 190 0000DA6F # data_ptr = zero_divide_data; /* set the data ptr */
195: 191 0000DA6F 0d 8f00000000 effffffea6 movl $_zero_divide_data,_data_ptr
196: 192 0000DA7A # max_index = zero_divide_cnt; /* set the max index */
197: 193 0000DA7A 0d effffffea0 effffffe9b movl _zero_divide_cnt,_max_index
198: 194 0000DA85 # if( (prt_hdrs) && (cycle == 1) )
199: 195 0000DA85 5d effffffe95 tstl _prt_hdrs
200: 196 0000DA8B 31 16 jeql L411
201: 197 0000DA8D 1d effffffe8d 01 cmpl _cycle,$1
202: 198 0000DA94 21 0d jneq L411
203: 199 0000DA96 # writes( op_name );
204: 200 0000DA96 dd effffffe84 pushl _op_name
205: 201 0000DA9C fe 08 effffffe7d callf $8,_writes
206: 202 0000DAA3 # test_inst();
207: 203 0000DAA3 L411:
208: 204 0000DAA3 fe 04 effffffe76 callf $4,_test_inst
209: 205 0000DAAA # }
210: 206 0000DAAA 40 ret#2
211: 207 0000DAAB .set L406,0x0
212: 208 0000DAAB L408:
213: 209 0000DAAB 11 93 jbr L409
214: 210 0000DAAD .data
215: 210 0001B3CD .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.