|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000a78 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _addf
6: 6 00000000 _addf:
7: 7 0000D62C 0000 .word L215
8: 8 0000D62E # #include "fpp_defs.h"
9: 9 0000D62E #
10: 10 0000D62E #
11: 11 0000D62E # /*****************************************************************************
12: 12 0000D62E # *
13: 13 0000D62E # * ADDF - SINGLE PRECISION FLOATING POINT ADD TEST
14: 14 0000D62E # *
15: 15 0000D62E # *****************************************************************************/
16: 16 0000D62E # addf()
17: 17 0000D62E # {
18: 18 0000D62E 11 5d jbr L217
19: 19 0000D630 L218:
20: 20 0000D630 # asm(".globl _addf_t");
21: 21 0000D630 .globl _addf_t
22: 22 0000D630 # asm("_addf_t:"); /* entry address */
23: 23 0000D630 _addf_t:
24: 24 0000D630 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st cycle */
25: 25 0000D630 1d effffffff6 01 cmpl _cycle,$1
26: 26 0000D637 21 15 jneq L219
27: 27 0000D639 5d efffffffed tstl _prt_hdrs
28: 28 0000D63F 31 0d jeql L219
29: 29 0000D641 # writes(" ADDF");
30: 30 0000D641 .data 1
31: 31 00000a78 * L221:
32: 32 00000a78 * 204144444600 .ascii " ADDF\0"
33: 33 00000a7e * .text
34: 34 0000D641 dd 8f00000a78 pushl $L221
35: 35 0000D647 fe 08 efffffffde callf $8,_writes
36: 36 0000D64E # addf_1(); /* add through a register */
37: 37 0000D64E L219:
38: 38 0000D64E fe 04 ef0000003b callf $4,_addf_1
39: 39 0000D655 # addf_2(); /* add through the cache */
40: 40 0000D655 fe 04 ef0000011e callf $4,_addf_2
41: 41 0000D65C # addf_3(); /* wait 3 NOPs */
42: 42 0000D65C fe 04 ef000001fb callf $4,_addf_3
43: 43 0000D663 # addf_4(); /* wait 2 NOPs */
44: 44 0000D663 fe 04 ef000002dc callf $4,_addf_4
45: 45 0000D66A # addf_5(); /* wait 1 NOP before storing */
46: 46 0000D66A fe 04 ef000003bb callf $4,_addf_5
47: 47 0000D671 # addf_6(); /* register stability test */
48: 48 0000D671 fe 04 ef0000049a callf $4,_addf_6
49: 49 0000D678 # addf_7(); /* PSL stability test */
50: 50 0000D678 fe 04 ef00000609 callf $4,_addf_7
51: 51 0000D67F # addf_8(); /* piped entry test */
52: 52 0000D67F fe 04 ef0000077e callf $4,_addf_8
53: 53 0000D686 # asm("jmp *return"); /* return to the test monitor */
54: 54 0000D686 71 ffffffffa0 jmp *return
55: 55 0000D68C # }
56: 56 0000D68C 40 ret#2
57: 57 0000D68D .set L215,0x0
58: 58 0000D68D L217:
59: 59 0000D68D 11 a1 jbr L218
60: 60 0000D68F .data
61: 61 00000a78 * .text
62: 62 0000D68F 00 .align 1
63: 63 0000D690 .globl _addf_1
64: 64 0000D690 _addf_1:
65: 65 0000D690 0000 .word L230
66: 66 0000D692 #
67: 67 0000D692 #
68: 68 0000D692 #
69: 69 0000D692 # /************************************************************************
70: 70 0000D692 # *
71: 71 0000D692 # * SUBTEST 1 - add through a register
72: 72 0000D692 # *
73: 73 0000D692 # ************************************************************************/
74: 74 0000D692 # addf_1()
75: 75 0000D692 # {
76: 76 0000D692 13 00e1 jbr L232
77: 77 0000D695 L233:
78: 78 0000D695 # force_loop = FALSE;
79: 79 0000D695 4d efffffff91 clrl _force_loop
80: 80 0000D69B # subtest = 1;
81: 81 0000D69B 0d 01 efffffff8a movl $1,_subtest
82: 82 0000D6A2 # for( index = 0; index < max_addf_1_index; index++ ) {
83: 83 0000D6A2 4d efffffff84 clrl _index
84: 84 0000D6A8 L236:
85: 85 0000D6A8 1d efffffff7e efffffff79 cmpl _index,_max_addf_1_index
86: 86 0000D6B3 91 03 13 00bd jgeq L235
87: 87 0000D6B8 # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
88: 88 0000D6B8 5c 0c efffffff6d 50 mull3 $12,_index,r0
89: 89 0000D6C0 0d e000000000 efffffff61 movl _addf_1_data(r0),_sgl_ld_acc
90: 90 0000D6CB # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
91: 91 0000D6CB 5c 0c efffffff5a 50 mull3 $12,_index,r0
92: 92 0000D6D3 0d e000000004 efffffff4e movl _addf_1_data+4(r0),_sgl_value_1
93: 93 0000D6DE # sgl_expected = addf_1_data[index].exp; /* get expected result */
94: 94 0000D6DE 5c 0c efffffff47 50 mull3 $12,_index,r0
95: 95 0000D6E6 0d e000000008 efffffff3b movl _addf_1_data+8(r0),_sgl_expected
96: 96 0000D6F1 # /*
97: 97 0000D6F1 # * If LOOP ON ERROR is set, this is the loop for this subtest.
98: 98 0000D6F1 # * The force loop flag is set after the first error.
99: 99 0000D6F1 # */
100: 100 0000D6F1 # asm("_addf_1_lp1:");
101: 101 0000D6F1 _addf_1_lp1:
102: 102 0000D6F1 # asm("movl _sgl_ld_acc,r3"); /* move the 1st data to r3 */
103: 103 0000D6F1 0d efffffff35 53 movl _sgl_ld_acc,r3
104: 104 0000D6F8 # asm("movl _sgl_value_1,r4"); /* move the 2nd data to r4 */
105: 105 0000D6F8 0d efffffff2e 54 movl _sgl_value_1,r4
106: 106 0000D6FF # asm("ldf r3"); /* load the 1st operand */
107: 107 0000D6FF 06 53 ldf r3
108: 108 0000D701 # asm("addf r4"); /* add the 2nd operand */
109: 109 0000D701 c6 54 addf r4
110: 110 0000D703 # asm("stf _sgl_st_acc"); /* store the result */
111: 111 0000D703 26 efffffff23 stf _sgl_st_acc
112: 112 0000D709 # if( force_loop )
113: 113 0000D709 5d efffffff1d tstl _force_loop
114: 114 0000D70F 31 02 jeql L237
115: 115 0000D711 # asm("brb _addf_1_lp1");; /* loop on the error */
116: 116 0000D711 11 de brb _addf_1_lp1
117: 117 0000D713 L237:
118: 118 0000D713 # /*
119: 119 0000D713 # * end error loop - test the results
120: 120 0000D713 # */
121: 121 0000D713 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
122: 122 0000D713 1d efffffff13 efffffff0e cmpl _sgl_st_acc,_sgl_expected
123: 123 0000D71E 31 4c jeql L238
124: 124 0000D720 # errcnt++; /* bump the error count */
125: 125 0000D720 6d efffffff06 incl _errcnt
126: 126 0000D726 # if( prt_error ) {
127: 127 0000D726 5d efffffff00 tstl _prt_error
128: 128 0000D72C 31 1b jeql L239
129: 129 0000D72E # print_addf_er_hdr();
130: 130 0000D72E fe 04 ef000007b7 callf $4,_print_addf_er_hdr
131: 131 0000D735 # writes(" (Reg. Data) - BAD FINAL ACC\n");
132: 132 0000D735 .data 1
133: 133 00000a7e * L241:
134: 134 00000a7e * 20285265672E2044617461292 .ascii " (Reg. Data) - BAD FINAL ACC\12\0"
135: 02D204241442046494E414C20
136: 4143430A00
137: 135 00000a9c * .text
138: 136 0000D735 dd 8f00000a7e pushl $L241
139: 137 0000D73B fe 08 effffffeea callf $8,_writes
140: 138 0000D742 # print_addf_data();
141: 139 0000D742 fe 04 ef00000805 callf $4,_print_addf_data
142: 140 0000D749 # }
143: 141 0000D749 # if( halt_flg )
144: 142 0000D749 L239:
145: 143 0000D749 5d effffffedd tstl _halt_flg
146: 144 0000D74F 31 09 jeql L243
147: 145 0000D751 # addf_er_halt( BAD_ACC_HLT ); /* halt on the error */
148: 146 0000D751 dd 01 pushl $1
149: 147 0000D753 fe 08 ef00000892 callf $8,_addf_er_halt
150: 148 0000D75A # if( loop_on_err ) {
151: 149 0000D75A L243:
152: 150 0000D75A 5d effffffecc tstl _loop_on_err
153: 151 0000D760 31 0a jeql L245
154: 152 0000D762 # force_loop = TRUE; /* set the force loop flag */
155: 153 0000D762 0d 01 effffffec3 movl $1,_force_loop
156: 154 0000D769 # asm("brw _addf_1_lp1");; /* and loop on the error */
157: 155 0000D769 13 ff85 brw _addf_1_lp1
158: 156 0000D76C # } /* end of loop on error */
159: 157 0000D76C # } /* end of compare error */
160: 158 0000D76C L245:
161: 159 0000D76C # } /* end of WHILE loop */
162: 160 0000D76C L238:
163: 161 0000D76C L234:
164: 162 0000D76C 6d effffffeba incl _index
165: 163 0000D772 13 ff33 jbr L236
166: 164 0000D775 L235:
167: 165 0000D775 # } /* end of subtest 1 */
168: 166 0000D775 40 ret#2
169: 167 0000D776 .set L230,0x0
170: 168 0000D776 L232:
171: 169 0000D776 13 ff1c jbr L233
172: 170 0000D779 .data
173: 171 00000a78 * .text
174: 172 0000D779 00 .align 1
175: 173 0000D77A .globl _addf_2
176: 174 0000D77A _addf_2:
177: 175 0000D77A 0000 .word L246
178: 176 0000D77C #
179: 177 0000D77C #
180: 178 0000D77C #
181: 179 0000D77C # /************************************************************************
182: 180 0000D77C # *
183: 181 0000D77C # * SUBTEST 2 - add through memory
184: 182 0000D77C # *
185: 183 0000D77C # ************************************************************************/
186: 184 0000D77C # addf_2()
187: 185 0000D77C # {
188: 186 0000D77C 13 00db jbr L248
189: 187 0000D77F L249:
190: 188 0000D77F # force_loop = FALSE;
191: 189 0000D77F 4d effffffea7 clrl _force_loop
192: 190 0000D785 # subtest = 2;
193: 191 0000D785 0d 02 effffffea0 movl $2,_subtest
194: 192 0000D78C # for( index = 0; index < max_addf_1_index; index++ ) {
195: 193 0000D78C 4d effffffe9a clrl _index
196: 194 0000D792 L252:
197: 195 0000D792 1d effffffe94 effffffe8f cmpl _index,_max_addf_1_index
198: 196 0000D79D 91 03 13 00b7 jgeq L251
199: 197 0000D7A2 # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
200: 198 0000D7A2 5c 0c effffffe83 50 mull3 $12,_index,r0
201: 199 0000D7AA 0d e000000000 effffffe77 movl _addf_1_data(r0),_sgl_ld_acc
202: 200 0000D7B5 # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
203: 201 0000D7B5 5c 0c effffffe70 50 mull3 $12,_index,r0
204: 202 0000D7BD 0d e000000004 effffffe64 movl _addf_1_data+4(r0),_sgl_value_1
205: 203 0000D7C8 # sgl_expected = addf_1_data[index].exp; /* get expected result */
206: 204 0000D7C8 5c 0c effffffe5d 50 mull3 $12,_index,r0
207: 205 0000D7D0 0d e000000008 effffffe51 movl _addf_1_data+8(r0),_sgl_expected
208: 206 0000D7DB # /*
209: 207 0000D7DB # * If LOOP ON ERROR is set, this is the loop for this subtest.
210: 208 0000D7DB # * The force loop flag is set after the first error.
211: 209 0000D7DB # */
212: 210 0000D7DB # asm("_addf_2_lp1:");
213: 211 0000D7DB _addf_2_lp1:
214: 212 0000D7DB # asm("ldf _sgl_ld_acc"); /* load the 1st operand */
215: 213 0000D7DB 06 effffffe4b ldf _sgl_ld_acc
216: 214 0000D7E1 # asm("addf _sgl_value_1"); /* add the 2nd operand */
217: 215 0000D7E1 c6 effffffe45 addf _sgl_value_1
218: 216 0000D7E7 # asm("stf _sgl_st_acc"); /* store the result */
219: 217 0000D7E7 26 effffffe3f stf _sgl_st_acc
220: 218 0000D7ED # if( force_loop )
221: 219 0000D7ED 5d effffffe39 tstl _force_loop
222: 220 0000D7F3 31 02 jeql L253
223: 221 0000D7F5 # asm("brb _addf_2_lp1");; /* loop on the error */
224: 222 0000D7F5 11 e4 brb _addf_2_lp1
225: 223 0000D7F7 L253:
226: 224 0000D7F7 # /*
227: 225 0000D7F7 # * end error loop - test the results
228: 226 0000D7F7 # */
229: 227 0000D7F7 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
230: 228 0000D7F7 1d effffffe2f effffffe2a cmpl _sgl_st_acc,_sgl_expected
231: 229 0000D802 31 4c jeql L254
232: 230 0000D804 # errcnt++; /* bump the error count */
233: 231 0000D804 6d effffffe22 incl _errcnt
234: 232 0000D80A # if( prt_error ) {
235: 233 0000D80A 5d effffffe1c tstl _prt_error
236: 234 0000D810 31 1b jeql L255
237: 235 0000D812 # print_addf_er_hdr();
238: 236 0000D812 fe 04 ef000006d3 callf $4,_print_addf_er_hdr
239: 237 0000D819 # writes(" (Cache Data) - BAD FINAL ACC\n");
240: 238 0000D819 .data 1
241: 239 00000a9c * L256:
242: 240 00000a9c * 2028436163686520446174612 .ascii " (Cache Data) - BAD FINAL ACC\12\0"
243: 9202D204241442046494E414C
244: 204143430A00
245: 241 00000abb * .text
246: 242 0000D819 dd 8f00000a9c pushl $L256
247: 243 0000D81F fe 08 effffffe06 callf $8,_writes
248: 244 0000D826 # print_addf_data();
249: 245 0000D826 fe 04 ef00000721 callf $4,_print_addf_data
250: 246 0000D82D # }
251: 247 0000D82D # if( halt_flg )
252: 248 0000D82D L255:
253: 249 0000D82D 5d effffffdf9 tstl _halt_flg
254: 250 0000D833 31 09 jeql L257
255: 251 0000D835 # addf_er_halt( BAD_ACC_HLT ); /* halt on the error */
256: 252 0000D835 dd 01 pushl $1
257: 253 0000D837 fe 08 ef000007ae callf $8,_addf_er_halt
258: 254 0000D83E # if( loop_on_err ) {
259: 255 0000D83E L257:
260: 256 0000D83E 5d effffffde8 tstl _loop_on_err
261: 257 0000D844 31 0a jeql L258
262: 258 0000D846 # force_loop = TRUE; /* set the force loop flag */
263: 259 0000D846 0d 01 effffffddf movl $1,_force_loop
264: 260 0000D84D # asm("brw _addf_2_lp1");; /* and loop on the error */
265: 261 0000D84D 13 ff8b brw _addf_2_lp1
266: 262 0000D850 # } /* end of loop on error */
267: 263 0000D850 # } /* end of compare error */
268: 264 0000D850 L258:
269: 265 0000D850 # } /* end of WHILE loop */
270: 266 0000D850 L254:
271: 267 0000D850 L250:
272: 268 0000D850 6d effffffdd6 incl _index
273: 269 0000D856 13 ff39 jbr L252
274: 270 0000D859 L251:
275: 271 0000D859 # } /* end of subtest 2 */
276: 272 0000D859 40 ret#2
277: 273 0000D85A .set L246,0x0
278: 274 0000D85A L248:
279: 275 0000D85A 13 ff22 jbr L249
280: 276 0000D85D .data
281: 277 00000a78 * .text
282: 278 0000D85D 00 .align 1
283: 279 0000D85E .globl _addf_3
284: 280 0000D85E _addf_3:
285: 281 0000D85E 0000 .word L259
286: 282 0000D860 #
287: 283 0000D860 #
288: 284 0000D860 #
289: 285 0000D860 # /************************************************************************
290: 286 0000D860 # *
291: 287 0000D860 # * SUBTEST 3 - Wait 3 NOPs before storing the results
292: 288 0000D860 # *
293: 289 0000D860 # ************************************************************************/
294: 290 0000D860 # addf_3()
295: 291 0000D860 # {
296: 292 0000D860 13 00df jbr L261
297: 293 0000D863 L262:
298: 294 0000D863 # force_loop = FALSE;
299: 295 0000D863 4d effffffdc3 clrl _force_loop
300: 296 0000D869 # subtest = 3;
301: 297 0000D869 0d 03 effffffdbc movl $3,_subtest
302: 298 0000D870 # for( index = 0; index < max_addf_1_index; index++ ) {
303: 299 0000D870 4d effffffdb6 clrl _index
304: 300 0000D876 L265:
305: 301 0000D876 1d effffffdb0 effffffdab cmpl _index,_max_addf_1_index
306: 302 0000D881 91 03 13 00bb jgeq L264
307: 303 0000D886 # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
308: 304 0000D886 5c 0c effffffd9f 50 mull3 $12,_index,r0
309: 305 0000D88E 0d e000000000 effffffd93 movl _addf_1_data(r0),_sgl_ld_acc
310: 306 0000D899 # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
311: 307 0000D899 5c 0c effffffd8c 50 mull3 $12,_index,r0
312: 308 0000D8A1 0d e000000004 effffffd80 movl _addf_1_data+4(r0),_sgl_value_1
313: 309 0000D8AC # sgl_expected = addf_1_data[index].exp; /* get expected result */
314: 310 0000D8AC 5c 0c effffffd79 50 mull3 $12,_index,r0
315: 311 0000D8B4 0d e000000008 effffffd6d movl _addf_1_data+8(r0),_sgl_expected
316: 312 0000D8BF # /*
317: 313 0000D8BF # * If LOOP ON ERROR is set, this is the loop for this subtest.
318: 314 0000D8BF # * The force loop flag is set after the first error.
319: 315 0000D8BF # */
320: 316 0000D8BF # asm("_addf_3_lp1:");
321: 317 0000D8BF _addf_3_lp1:
322: 318 0000D8BF # asm("ldf _sgl_ld_acc"); /* load the 1st operand */
323: 319 0000D8BF 06 effffffd67 ldf _sgl_ld_acc
324: 320 0000D8C5 # asm("nop"); /* delay */
325: 321 0000D8C5 10 nop
326: 322 0000D8C6 # asm("addf _sgl_value_1"); /* add the 2nd operand */
327: 323 0000D8C6 c6 effffffd60 addf _sgl_value_1
328: 324 0000D8CC # asm("nop"); /* delay before ... */
329: 325 0000D8CC 10 nop
330: 326 0000D8CD # asm("nop");
331: 327 0000D8CD 10 nop
332: 328 0000D8CE # asm("nop"); /* ... storing the result */
333: 329 0000D8CE 10 nop
334: 330 0000D8CF # asm("stf _sgl_st_acc"); /* store the result */
335: 331 0000D8CF 26 effffffd57 stf _sgl_st_acc
336: 332 0000D8D5 # if( force_loop )
337: 333 0000D8D5 5d effffffd51 tstl _force_loop
338: 334 0000D8DB 31 02 jeql L266
339: 335 0000D8DD # asm("brb _addf_3_lp1");; /* loop on the error */
340: 336 0000D8DD 11 e0 brb _addf_3_lp1
341: 337 0000D8DF L266:
342: 338 0000D8DF # /*
343: 339 0000D8DF # * end error loop - test the results
344: 340 0000D8DF # */
345: 341 0000D8DF # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
346: 342 0000D8DF 1d effffffd47 effffffd42 cmpl _sgl_st_acc,_sgl_expected
347: 343 0000D8EA 31 4c jeql L267
348: 344 0000D8EC # errcnt++; /* bump the error count */
349: 345 0000D8EC 6d effffffd3a incl _errcnt
350: 346 0000D8F2 # if( prt_error ) {
351: 347 0000D8F2 5d effffffd34 tstl _prt_error
352: 348 0000D8F8 31 1b jeql L268
353: 349 0000D8FA # print_addf_er_hdr();
354: 350 0000D8FA fe 04 ef000005eb callf $4,_print_addf_er_hdr
355: 351 0000D901 # writes(" (Cache Data - 3 NOPS) - BAD FINAL ACC\n");
356: 352 0000D901 .data 1
357: 353 00000abb * L269:
358: 354 00000abb * 2028436163686520446174612 .ascii " (Cache Data - 3 NOPS) - BAD FINAL ACC\12\0"
359: 02D2033204E4F505329202D20
360: 4241442046494E414C2041434
361: 30A00
362: 355 00000ae3 * .text
363: 356 0000D901 dd 8f00000abb pushl $L269
364: 357 0000D907 fe 08 effffffd1e callf $8,_writes
365: 358 0000D90E # print_addf_data();
366: 359 0000D90E fe 04 ef00000639 callf $4,_print_addf_data
367: 360 0000D915 # }
368: 361 0000D915 # if( halt_flg )
369: 362 0000D915 L268:
370: 363 0000D915 5d effffffd11 tstl _halt_flg
371: 364 0000D91B 31 09 jeql L270
372: 365 0000D91D # addf_er_halt( BAD_ACC_HLT ); /* halt on the error */
373: 366 0000D91D dd 01 pushl $1
374: 367 0000D91F fe 08 ef000006c6 callf $8,_addf_er_halt
375: 368 0000D926 # if( loop_on_err ) {
376: 369 0000D926 L270:
377: 370 0000D926 5d effffffd00 tstl _loop_on_err
378: 371 0000D92C 31 0a jeql L271
379: 372 0000D92E # force_loop = TRUE; /* set the force loop flag */
380: 373 0000D92E 0d 01 effffffcf7 movl $1,_force_loop
381: 374 0000D935 # asm("brw _addf_3_lp1");; /* and loop on the error */
382: 375 0000D935 13 ff87 brw _addf_3_lp1
383: 376 0000D938 # } /* end of loop on error */
384: 377 0000D938 # } /* end of compare error */
385: 378 0000D938 L271:
386: 379 0000D938 # } /* end of WHILE loop */
387: 380 0000D938 L267:
388: 381 0000D938 L263:
389: 382 0000D938 6d effffffcee incl _index
390: 383 0000D93E 13 ff35 jbr L265
391: 384 0000D941 L264:
392: 385 0000D941 # } /* end of subtest 3 */
393: 386 0000D941 40 ret#2
394: 387 0000D942 .set L259,0x0
395: 388 0000D942 L261:
396: 389 0000D942 13 ff1e jbr L262
397: 390 0000D945 .data
398: 391 00000a78 * .text
399: 392 0000D945 00 .align 1
400: 393 0000D946 .globl _addf_4
401: 394 0000D946 _addf_4:
402: 395 0000D946 0000 .word L272
403: 396 0000D948 #
404: 397 0000D948 #
405: 398 0000D948 #
406: 399 0000D948 # /************************************************************************
407: 400 0000D948 # *
408: 401 0000D948 # * SUBTEST 4 - Wait 2 NOPs before storing the results
409: 402 0000D948 # *
410: 403 0000D948 # ************************************************************************/
411: 404 0000D948 # addf_4()
412: 405 0000D948 # {
413: 406 0000D948 13 00de jbr L274
414: 407 0000D94B L275:
415: 408 0000D94B # force_loop = FALSE;
416: 409 0000D94B 4d effffffcdb clrl _force_loop
417: 410 0000D951 # subtest = 4;
418: 411 0000D951 0d 04 effffffcd4 movl $4,_subtest
419: 412 0000D958 # for( index = 0; index < max_addf_1_index; index++ ) {
420: 413 0000D958 4d effffffcce clrl _index
421: 414 0000D95E L278:
422: 415 0000D95E 1d effffffcc8 effffffcc3 cmpl _index,_max_addf_1_index
423: 416 0000D969 91 03 13 00ba jgeq L277
424: 417 0000D96E # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
425: 418 0000D96E 5c 0c effffffcb7 50 mull3 $12,_index,r0
426: 419 0000D976 0d e000000000 effffffcab movl _addf_1_data(r0),_sgl_ld_acc
427: 420 0000D981 # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
428: 421 0000D981 5c 0c effffffca4 50 mull3 $12,_index,r0
429: 422 0000D989 0d e000000004 effffffc98 movl _addf_1_data+4(r0),_sgl_value_1
430: 423 0000D994 # sgl_expected = addf_1_data[index].exp; /* get expected result */
431: 424 0000D994 5c 0c effffffc91 50 mull3 $12,_index,r0
432: 425 0000D99C 0d e000000008 effffffc85 movl _addf_1_data+8(r0),_sgl_expected
433: 426 0000D9A7 # /*
434: 427 0000D9A7 # * If LOOP ON ERROR is set, this is the loop for this subtest.
435: 428 0000D9A7 # * The force loop flag is set after the first error.
436: 429 0000D9A7 # */
437: 430 0000D9A7 # asm("_addf_4_lp1:");
438: 431 0000D9A7 _addf_4_lp1:
439: 432 0000D9A7 # asm("ldf _sgl_ld_acc"); /* load the 1st operand */
440: 433 0000D9A7 06 effffffc7f ldf _sgl_ld_acc
441: 434 0000D9AD # asm("nop"); /* delay */
442: 435 0000D9AD 10 nop
443: 436 0000D9AE # asm("addf _sgl_value_1"); /* add the 2nd operand */
444: 437 0000D9AE c6 effffffc78 addf _sgl_value_1
445: 438 0000D9B4 # asm("nop"); /* delay before ... */
446: 439 0000D9B4 10 nop
447: 440 0000D9B5 # asm("nop"); /* ... storing the result */
448: 441 0000D9B5 10 nop
449: 442 0000D9B6 # asm("stf _sgl_st_acc"); /* store the result */
450: 443 0000D9B6 26 effffffc70 stf _sgl_st_acc
451: 444 0000D9BC # if( force_loop )
452: 445 0000D9BC 5d effffffc6a tstl _force_loop
453: 446 0000D9C2 31 02 jeql L279
454: 447 0000D9C4 # asm("brb _addf_4_lp1");; /* loop on the error */
455: 448 0000D9C4 11 e1 brb _addf_4_lp1
456: 449 0000D9C6 L279:
457: 450 0000D9C6 # /*
458: 451 0000D9C6 # * end error loop - test the results
459: 452 0000D9C6 # */
460: 453 0000D9C6 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
461: 454 0000D9C6 1d effffffc60 effffffc5b cmpl _sgl_st_acc,_sgl_expected
462: 455 0000D9D1 31 4c jeql L280
463: 456 0000D9D3 # errcnt++; /* bump the error count */
464: 457 0000D9D3 6d effffffc53 incl _errcnt
465: 458 0000D9D9 # if( prt_error ) {
466: 459 0000D9D9 5d effffffc4d tstl _prt_error
467: 460 0000D9DF 31 1b jeql L281
468: 461 0000D9E1 # print_addf_er_hdr();
469: 462 0000D9E1 fe 04 ef00000504 callf $4,_print_addf_er_hdr
470: 463 0000D9E8 # writes(" (Cache Data - 2 NOPS) - BAD FINAL ACC\n");
471: 464 0000D9E8 .data 1
472: 465 00000ae3 * L282:
473: 466 00000ae3 * 2028436163686520446174612 .ascii " (Cache Data - 2 NOPS) - BAD FINAL ACC\12\0"
474: 02D2032204E4F505329202D20
475: 4241442046494E414C2041434
476: 30A00
477: 467 00000b0b * .text
478: 468 0000D9E8 dd 8f00000ae3 pushl $L282
479: 469 0000D9EE fe 08 effffffc37 callf $8,_writes
480: 470 0000D9F5 # print_addf_data();
481: 471 0000D9F5 fe 04 ef00000552 callf $4,_print_addf_data
482: 472 0000D9FC # }
483: 473 0000D9FC # if( halt_flg )
484: 474 0000D9FC L281:
485: 475 0000D9FC 5d effffffc2a tstl _halt_flg
486: 476 0000DA02 31 09 jeql L283
487: 477 0000DA04 # addf_er_halt( BAD_ACC_HLT ); /* halt on the error */
488: 478 0000DA04 dd 01 pushl $1
489: 479 0000DA06 fe 08 ef000005df callf $8,_addf_er_halt
490: 480 0000DA0D # if( loop_on_err ) {
491: 481 0000DA0D L283:
492: 482 0000DA0D 5d effffffc19 tstl _loop_on_err
493: 483 0000DA13 31 0a jeql L284
494: 484 0000DA15 # force_loop = TRUE; /* set the force loop flag */
495: 485 0000DA15 0d 01 effffffc10 movl $1,_force_loop
496: 486 0000DA1C # asm("brw _addf_4_lp1");; /* and loop on the error */
497: 487 0000DA1C 13 ff88 brw _addf_4_lp1
498: 488 0000DA1F # } /* end of loop on error */
499: 489 0000DA1F # } /* end of compare error */
500: 490 0000DA1F L284:
501: 491 0000DA1F # } /* end of WHILE loop */
502: 492 0000DA1F L280:
503: 493 0000DA1F L276:
504: 494 0000DA1F 6d effffffc07 incl _index
505: 495 0000DA25 13 ff36 jbr L278
506: 496 0000DA28 L277:
507: 497 0000DA28 # } /* end of subtest 4 */
508: 498 0000DA28 40 ret#2
509: 499 0000DA29 .set L272,0x0
510: 500 0000DA29 L274:
511: 501 0000DA29 13 ff1f jbr L275
512: 502 0000DA2C .data
513: 503 00000a78 * .text
514: 504 0000DA2C .align 1
515: 505 0000DA2C .globl _addf_5
516: 506 0000DA2C _addf_5:
517: 507 0000DA2C 0000 .word L285
518: 508 0000DA2E #
519: 509 0000DA2E #
520: 510 0000DA2E #
521: 511 0000DA2E # /************************************************************************
522: 512 0000DA2E # *
523: 513 0000DA2E # * SUBTEST 5 - Wait 1 NOP before storing the results
524: 514 0000DA2E # *
525: 515 0000DA2E # ************************************************************************/
526: 516 0000DA2E # addf_5()
527: 517 0000DA2E # {
528: 518 0000DA2E 13 00dd jbr L287
529: 519 0000DA31 L288:
530: 520 0000DA31 # force_loop = FALSE;
531: 521 0000DA31 4d effffffbf5 clrl _force_loop
532: 522 0000DA37 # subtest = 5;
533: 523 0000DA37 0d 05 effffffbee movl $5,_subtest
534: 524 0000DA3E # for( index = 0; index < max_addf_1_index; index++ ) {
535: 525 0000DA3E 4d effffffbe8 clrl _index
536: 526 0000DA44 L291:
537: 527 0000DA44 1d effffffbe2 effffffbdd cmpl _index,_max_addf_1_index
538: 528 0000DA4F 91 03 13 00b9 jgeq L290
539: 529 0000DA54 # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
540: 530 0000DA54 5c 0c effffffbd1 50 mull3 $12,_index,r0
541: 531 0000DA5C 0d e000000000 effffffbc5 movl _addf_1_data(r0),_sgl_ld_acc
542: 532 0000DA67 # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
543: 533 0000DA67 5c 0c effffffbbe 50 mull3 $12,_index,r0
544: 534 0000DA6F 0d e000000004 effffffbb2 movl _addf_1_data+4(r0),_sgl_value_1
545: 535 0000DA7A # sgl_expected = addf_1_data[index].exp; /* get expected result */
546: 536 0000DA7A 5c 0c effffffbab 50 mull3 $12,_index,r0
547: 537 0000DA82 0d e000000008 effffffb9f movl _addf_1_data+8(r0),_sgl_expected
548: 538 0000DA8D # /*
549: 539 0000DA8D # * If LOOP ON ERROR is set, this is the loop for this subtest.
550: 540 0000DA8D # * The force loop flag is set after the first error.
551: 541 0000DA8D # */
552: 542 0000DA8D # asm("_addf_5_lp1:");
553: 543 0000DA8D _addf_5_lp1:
554: 544 0000DA8D # asm("ldf _sgl_ld_acc"); /* load the 1st operand */
555: 545 0000DA8D 06 effffffb99 ldf _sgl_ld_acc
556: 546 0000DA93 # asm("nop"); /* delay */
557: 547 0000DA93 10 nop
558: 548 0000DA94 # asm("addf _sgl_value_1"); /* add the 2nd operand */
559: 549 0000DA94 c6 effffffb92 addf _sgl_value_1
560: 550 0000DA9A # asm("nop"); /* delay before storing */
561: 551 0000DA9A 10 nop
562: 552 0000DA9B # asm("stf _sgl_st_acc"); /* store the result */
563: 553 0000DA9B 26 effffffb8b stf _sgl_st_acc
564: 554 0000DAA1 # if( force_loop )
565: 555 0000DAA1 5d effffffb85 tstl _force_loop
566: 556 0000DAA7 31 02 jeql L292
567: 557 0000DAA9 # asm("brb _addf_5_lp1");; /* loop on the error */
568: 558 0000DAA9 11 e2 brb _addf_5_lp1
569: 559 0000DAAB L292:
570: 560 0000DAAB # /*
571: 561 0000DAAB # * end error loop - test the results
572: 562 0000DAAB # */
573: 563 0000DAAB # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
574: 564 0000DAAB 1d effffffb7b effffffb76 cmpl _sgl_st_acc,_sgl_expected
575: 565 0000DAB6 31 4c jeql L293
576: 566 0000DAB8 # errcnt++; /* bump the error count */
577: 567 0000DAB8 6d effffffb6e incl _errcnt
578: 568 0000DABE # if( prt_error ) {
579: 569 0000DABE 5d effffffb68 tstl _prt_error
580: 570 0000DAC4 31 1b jeql L294
581: 571 0000DAC6 # print_addf_er_hdr();
582: 572 0000DAC6 fe 04 ef0000041f callf $4,_print_addf_er_hdr
583: 573 0000DACD # writes(" (Cache Data - 1 NOP) - BAD FINAL ACC\n");
584: 574 0000DACD .data 1
585: 575 00000b0b * L295:
586: 576 00000b0b * 2028436163686520446174612 .ascii " (Cache Data - 1 NOP) - BAD FINAL ACC\12\0"
587: 02D2031204E4F5029202D2042
588: 41442046494E414C204143430
589: A00
590: 577 00000b32 * .text
591: 578 0000DACD dd 8f00000b0b pushl $L295
592: 579 0000DAD3 fe 08 effffffb52 callf $8,_writes
593: 580 0000DADA # print_addf_data();
594: 581 0000DADA fe 04 ef0000046d callf $4,_print_addf_data
595: 582 0000DAE1 # }
596: 583 0000DAE1 # if( halt_flg )
597: 584 0000DAE1 L294:
598: 585 0000DAE1 5d effffffb45 tstl _halt_flg
599: 586 0000DAE7 31 09 jeql L296
600: 587 0000DAE9 # addf_er_halt( BAD_ACC_HLT ); /* halt on the error */
601: 588 0000DAE9 dd 01 pushl $1
602: 589 0000DAEB fe 08 ef000004fa callf $8,_addf_er_halt
603: 590 0000DAF2 # if( loop_on_err ) {
604: 591 0000DAF2 L296:
605: 592 0000DAF2 5d effffffb34 tstl _loop_on_err
606: 593 0000DAF8 31 0a jeql L297
607: 594 0000DAFA # force_loop = TRUE; /* set the force loop flag */
608: 595 0000DAFA 0d 01 effffffb2b movl $1,_force_loop
609: 596 0000DB01 # asm("brw _addf_5_lp1");; /* and loop on the error */
610: 597 0000DB01 13 ff89 brw _addf_5_lp1
611: 598 0000DB04 # } /* end of loop on error */
612: 599 0000DB04 # } /* end of compare error */
613: 600 0000DB04 L297:
614: 601 0000DB04 # } /* end of WHILE loop */
615: 602 0000DB04 L293:
616: 603 0000DB04 L289:
617: 604 0000DB04 6d effffffb22 incl _index
618: 605 0000DB0A 13 ff37 jbr L291
619: 606 0000DB0D L290:
620: 607 0000DB0D # } /* end of subtest 5 */
621: 608 0000DB0D 40 ret#2
622: 609 0000DB0E .set L285,0x0
623: 610 0000DB0E L287:
624: 611 0000DB0E 13 ff20 jbr L288
625: 612 0000DB11 .data
626: 613 00000a78 * .text
627: 614 0000DB11 00 .align 1
628: 615 0000DB12 .globl _addf_6
629: 616 0000DB12 _addf_6:
630: 617 0000DB12 0000 .word L298
631: 618 0000DB14 #
632: 619 0000DB14 #
633: 620 0000DB14 #
634: 621 0000DB14 # /************************************************************************
635: 622 0000DB14 # *
636: 623 0000DB14 # * SUBTEST 6 - Check for register corruption
637: 624 0000DB14 # *
638: 625 0000DB14 # ************************************************************************/
639: 626 0000DB14 # addf_6()
640: 627 0000DB14 # {
641: 628 0000DB14 13 016d jbr L300
642: 629 0000DB17 L301:
643: 630 0000DB17 # force_loop = FALSE; /* clear force_loop flg */
644: 631 0000DB17 4d effffffb0f clrl _force_loop
645: 632 0000DB1D # subtest = 6;
646: 633 0000DB1D 0d 06 effffffb08 movl $6,_subtest
647: 634 0000DB24 # fill_reg_buf( load_regs ); /* get patterns for regs */
648: 635 0000DB24 dd 8f00000000 pushl $_load_regs
649: 636 0000DB2A fe 08 effffffafb callf $8,_fill_reg_buf
650: 637 0000DB31 # index = 0;
651: 638 0000DB31 4d effffffaf5 clrl _index
652: 639 0000DB37 # sgl_ld_acc = addf_1_data[0].op_1; /* get operand 1 */
653: 640 0000DB37 0d effffffaef effffffaea movl _addf_1_data,_sgl_ld_acc
654: 641 0000DB42 # sgl_value_1 = addf_1_data[0].op_2; /* get operand 2 */
655: 642 0000DB42 0d effffffae8 effffffadf movl _addf_1_data+4,_sgl_value_1
656: 643 0000DB4D # sgl_expected = addf_1_data[0].exp; /* get expected result */
657: 644 0000DB4D 0d effffffae1 effffffad4 movl _addf_1_data+8,_sgl_expected
658: 645 0000DB58 # /*
659: 646 0000DB58 # * If LOOP ON ERROR is set, this is the loop for this subtest.
660: 647 0000DB58 # * The force loop flag is set after the first error.
661: 648 0000DB58 # */
662: 649 0000DB58 # asm("_addf_6_lp1:");
663: 650 0000DB58 _addf_6_lp1:
664: 651 0000DB58 # asm("ldf _sgl_ld_acc"); /* LOAD the accumulator */
665: 652 0000DB58 06 efffffface ldf _sgl_ld_acc
666: 653 0000DB5E # asm("nop");
667: 654 0000DB5E 10 nop
668: 655 0000DB5F # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
669: 656 0000DB5F ab 891fff effffffac4 loadr $0x1fff,_load_regs
670: 657 0000DB68 # asm("nop");
671: 658 0000DB68 10 nop
672: 659 0000DB69 # asm("addf _sgl_value_1"); /* do the add */
673: 660 0000DB69 c6 effffffabd addf _sgl_value_1
674: 661 0000DB6F # asm("nop");
675: 662 0000DB6F 10 nop
676: 663 0000DB70 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
677: 664 0000DB70 bb 891fff effffffab3 storer $0x1fff,_store_regs
678: 665 0000DB79 # asm("stf _sgl_st_acc"); /* save the accumulator */
679: 666 0000DB79 26 effffffaad stf _sgl_st_acc
680: 667 0000DB7F # if( force_loop )
681: 668 0000DB7F 5d effffffaa7 tstl _force_loop
682: 669 0000DB85 31 02 jeql L303
683: 670 0000DB87 # asm("brb _addf_6_lp1");; /* loop on the error */
684: 671 0000DB87 11 cf brb _addf_6_lp1
685: 672 0000DB89 L303:
686: 673 0000DB89 # /*
687: 674 0000DB89 # * Now compare the stored register values to those that were loaded
688: 675 0000DB89 # */
689: 676 0000DB89 # index2 = 0;
690: 677 0000DB89 4d effffffa9d clrl _index2
691: 678 0000DB8F # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
692: 679 0000DB8F L304:
693: 680 0000DB8F 0d effffffa97 50 movl _index2,r0
694: 681 0000DB96 0d effffffa90 51 movl _index2,r1
695: 682 0000DB9D 1d 40effffffa88 cmpl _load_regs[r0],_store_regs[r1]
696: 41effffffa82
697: 683 0000DBAA 21 11 jneq L305
698: 684 0000DBAC 1d effffffa7a 0d cmpl _index2,$13
699: 685 0000DBB3 81 08 jgeq L305
700: 686 0000DBB5 # index2++; /* check reg values */
701: 687 0000DBB5 6d effffffa71 incl _index2
702: 688 0000DBBB 11 d2 jbr L304
703: 689 0000DBBD L305:
704: 690 0000DBBD # if( index2 < 13 ) { /* error if index2 < 13 */
705: 691 0000DBBD 1d effffffa69 0d cmpl _index2,$13
706: 692 0000DBC4 91 03 13 00ba jgeq L306
707: 693 0000DBC9 # errcnt++; /* bump the error count */
708: 694 0000DBC9 6d effffffa5d incl _errcnt
709: 695 0000DBCF # if( prt_error ) {
710: 696 0000DBCF 5d effffffa57 tstl _prt_error
711: 697 0000DBD5 21 03 13 0086 jeql L307
712: 698 0000DBDA # print_addf_er_hdr();
713: 699 0000DBDA fe 04 ef0000030b callf $4,_print_addf_er_hdr
714: 700 0000DBE1 # writes(" - A REGISTER WAS MODIFIED\n");
715: 701 0000DBE1 .data 1
716: 702 00000b32 * L308:
717: 703 00000b32 * 202D204120524547495354455 .ascii " - A REGISTER WAS MODIFIED\12\0"
718: 220574153204D4F4449464945
719: 440A00
720: 704 00000b4e * .text
721: 705 0000DBE1 dd 8f00000b32 pushl $L308
722: 706 0000DBE7 fe 08 effffffa3e callf $8,_writes
723: 707 0000DBEE # print_addf_data();
724: 708 0000DBEE fe 04 ef00000359 callf $4,_print_addf_data
725: 709 0000DBF5 # writes("register "); /* print the information */
726: 710 0000DBF5 .data 1
727: 711 00000b4e * L309:
728: 712 00000b4e * 72656769737465722000 .ascii "register \0"
729: 713 00000b58 * .text
730: 714 0000DBF5 dd 8f00000b4e pushl $L309
731: 715 0000DBFB fe 08 effffffa2a callf $8,_writes
732: 716 0000DC02 # writed( index2 ); /* about the corrupted */
733: 717 0000DC02 dd effffffa24 pushl _index2
734: 718 0000DC08 fe 08 effffffa1d callf $8,_writed
735: 719 0000DC0F # writes(" = "); /* register */
736: 720 0000DC0F .data 1
737: 721 00000b58 * L311:
738: 722 00000b58 * 203D2000 .ascii " = \0"
739: 723 00000b5c * .text
740: 724 0000DC0F dd 8f00000b58 pushl $L311
741: 725 0000DC15 fe 08 effffffa10 callf $8,_writes
742: 726 0000DC1C # write32h( store_regs[index2] );
743: 727 0000DC1C 0d effffffa0a 50 movl _index2,r0
744: 728 0000DC23 dd 40effffffa02 pushl _store_regs[r0]
745: 729 0000DC2A fe 08 effffff9fb callf $8,_write32h
746: 730 0000DC31 # writes(", should be = ");
747: 731 0000DC31 .data 1
748: 732 00000b5c * L313:
749: 733 00000b5c * 2C202073686F756C642062652 .ascii ", should be = \0"
750: 03D2000
751: 734 00000b6c * .text
752: 735 0000DC31 dd 8f00000b5c pushl $L313
753: 736 0000DC37 fe 08 effffff9ee callf $8,_writes
754: 737 0000DC3E # write32h( load_regs[index2] );
755: 738 0000DC3E 0d effffff9e8 50 movl _index2,r0
756: 739 0000DC45 dd 40effffff9e0 pushl _load_regs[r0]
757: 740 0000DC4C fe 08 effffff9d9 callf $8,_write32h
758: 741 0000DC53 # writes("\n");
759: 742 0000DC53 .data 1
760: 743 00000b6c * L314:
761: 744 00000b6c * 0A00 .ascii "\12\0"
762: 745 00000b6e * .text
763: 746 0000DC53 dd 8f00000b6c pushl $L314
764: 747 0000DC59 fe 08 effffff9cc callf $8,_writes
765: 748 0000DC60 # }
766: 749 0000DC60 # if( halt_flg )
767: 750 0000DC60 L307:
768: 751 0000DC60 5d effffff9c6 tstl _halt_flg
769: 752 0000DC66 31 09 jeql L315
770: 753 0000DC68 # addf_er_halt( BAD_REG_HLT ); /* halt on the error */
771: 754 0000DC68 dd 02 pushl $2
772: 755 0000DC6A fe 08 ef0000037b callf $8,_addf_er_halt
773: 756 0000DC71 # if( loop_on_err ) {
774: 757 0000DC71 L315:
775: 758 0000DC71 5d effffff9b5 tstl _loop_on_err
776: 759 0000DC77 31 0a jeql L316
777: 760 0000DC79 # force_loop = TRUE; /* set the force loop flag */
778: 761 0000DC79 0d 01 effffff9ac movl $1,_force_loop
779: 762 0000DC80 # asm("brw _addf_6_lp1");; /* and loop on the error */
780: 763 0000DC80 13 fed5 brw _addf_6_lp1
781: 764 0000DC83 # } /* end of loop on error */
782: 765 0000DC83 # } /* end of register corruption error */
783: 766 0000DC83 L316:
784: 767 0000DC83 # } /* end of subtest 6 */
785: 768 0000DC83 L306:
786: 769 0000DC83 40 ret#2
787: 770 0000DC84 .set L298,0x0
788: 771 0000DC84 L300:
789: 772 0000DC84 13 fe90 jbr L301
790: 773 0000DC87 .data
791: 774 00000a78 * .text
792: 775 0000DC87 00 .align 1
793: 776 0000DC88 .globl _addf_7
794: 777 0000DC88 _addf_7:
795: 778 0000DC88 0000 .word L317
796: 779 0000DC8A #
797: 780 0000DC8A #
798: 781 0000DC8A #
799: 782 0000DC8A # /************************************************************************
800: 783 0000DC8A # *
801: 784 0000DC8A # * SUBTEST 7 - Check for PSL corruption
802: 785 0000DC8A # *
803: 786 0000DC8A # ************************************************************************/
804: 787 0000DC8A # addf_7()
805: 788 0000DC8A # {
806: 789 0000DC8A 13 0174 jbr L319
807: 790 0000DC8D L320:
808: 791 0000DC8D # force_loop = FALSE; /* clear force_loop flg */
809: 792 0000DC8D 4d effffff999 clrl _force_loop
810: 793 0000DC93 # subtest = 7;
811: 794 0000DC93 0d 07 effffff992 movl $7,_subtest
812: 795 0000DC9A # fill_reg_buf( load_regs ); /* get patterns for regs */
813: 796 0000DC9A dd 8f00000000 pushl $_load_regs
814: 797 0000DCA0 fe 08 effffff985 callf $8,_fill_reg_buf
815: 798 0000DCA7 # for( index = 0; index < 3; index++ ) {
816: 799 0000DCA7 4d effffff97f clrl _index
817: 800 0000DCAD L323:
818: 801 0000DCAD 1d effffff979 03 cmpl _index,$3
819: 802 0000DCB4 91 03 13 0147 jgeq L322
820: 803 0000DCB9 # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
821: 804 0000DCB9 5c 0c effffff96c 50 mull3 $12,_index,r0
822: 805 0000DCC1 0d e000000000 effffff960 movl _addf_1_data(r0),_sgl_ld_acc
823: 806 0000DCCC # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
824: 807 0000DCCC 5c 0c effffff959 50 mull3 $12,_index,r0
825: 808 0000DCD4 0d e000000004 effffff94d movl _addf_1_data+4(r0),_sgl_value_1
826: 809 0000DCDF # sgl_expected = addf_1_data[index].exp; /* get expected */
827: 810 0000DCDF 5c 0c effffff946 50 mull3 $12,_index,r0
828: 811 0000DCE7 0d e000000008 effffff93a movl _addf_1_data+8(r0),_sgl_expected
829: 812 0000DCF2 # sgl_dummy1 = status_array[index]; /* status = +, -, 0 */
830: 813 0000DCF2 0d effffff934 50 movl _index,r0
831: 814 0000DCF9 0d 40effffff92c movl _status_array[r0],_sgl_dummy1
832: effffff927
833: 815 0000DD05 # /*
834: 816 0000DD05 # * If LOOP ON ERROR is set, this is the loop for this subtest.
835: 817 0000DD05 # * The force loop flag is set after the first error.
836: 818 0000DD05 # */
837: 819 0000DD05 # asm("_addf_7_lp1:");
838: 820 0000DD05 _addf_7_lp1:
839: 821 0000DD05 # asm("ldf _sgl_ld_acc"); /* LOAD the accumulator */
840: 822 0000DD05 06 effffff921 ldf _sgl_ld_acc
841: 823 0000DD0B # asm("nop");
842: 824 0000DD0B 10 nop
843: 825 0000DD0C # asm("tstl _sgl_dummy1"); /* set the PSL status */
844: 826 0000DD0C 5d effffff91a tstl _sgl_dummy1
845: 827 0000DD12 # asm("movpsl _init_psl"); /* save the initial PSL */
846: 828 0000DD12 cd effffff914 movpsl _init_psl
847: 829 0000DD18 # asm("addf _sgl_value_1"); /* do the add */
848: 830 0000DD18 c6 effffff90e addf _sgl_value_1
849: 831 0000DD1E # asm("nop");
850: 832 0000DD1E 10 nop
851: 833 0000DD1F # asm("movpsl _psl_val"); /* save the final PSL */
852: 834 0000DD1F cd effffff907 movpsl _psl_val
853: 835 0000DD25 # asm("stf _sgl_st_acc"); /* save the accumulator */
854: 836 0000DD25 26 effffff901 stf _sgl_st_acc
855: 837 0000DD2B # if( force_loop )
856: 838 0000DD2B 5d effffff8fb tstl _force_loop
857: 839 0000DD31 31 02 jeql L324
858: 840 0000DD33 # asm("brb _addf_7_lp1");; /* loop on the error */
859: 841 0000DD33 11 d0 brb _addf_7_lp1
860: 842 0000DD35 L324:
861: 843 0000DD35 # /*
862: 844 0000DD35 # * Now compare the final PSL to the initial PSL -they should be the same
863: 845 0000DD35 # */
864: 846 0000DD35 # exp_psl = init_psl;
865: 847 0000DD35 0d effffff8f1 effffff8ec movl _init_psl,_exp_psl
866: 848 0000DD40 # if( psl_val != exp_psl ) {
867: 849 0000DD40 1d effffff8e6 effffff8e1 cmpl _psl_val,_exp_psl
868: 850 0000DD4B 21 03 13 00a7 jeql L325
869: 851 0000DD50 # errcnt++; /* bump the error count */
870: 852 0000DD50 6d effffff8d6 incl _errcnt
871: 853 0000DD56 # if( prt_error ) {
872: 854 0000DD56 5d effffff8d0 tstl _prt_error
873: 855 0000DD5C 31 76 jeql L326
874: 856 0000DD5E # print_addf_er_hdr();
875: 857 0000DD5E fe 04 ef00000187 callf $4,_print_addf_er_hdr
876: 858 0000DD65 # writes(" - INCORRECT FINAL PSL\n");
877: 859 0000DD65 .data 1
878: 860 00000b6e * L327:
879: 861 00000b6e * 202D20494E434F52524543542 .ascii " - INCORRECT FINAL PSL\12\0"
880: 046494E414C2050534C0A00
881: 862 00000b86 * .text
882: 863 0000DD65 dd 8f00000b6e pushl $L327
883: 864 0000DD6B fe 08 effffff8ba callf $8,_writes
884: 865 0000DD72 # print_addf_data();
885: 866 0000DD72 fe 04 ef000001d5 callf $4,_print_addf_data
886: 867 0000DD79 # writes("initial PSL = ");
887: 868 0000DD79 .data 1
888: 869 00000b86 * L328:
889: 870 00000b86 * 696E697469616C2050534C203 .ascii "initial PSL = \0"
890: D2000
891: 871 00000b95 * .text
892: 872 0000DD79 dd 8f00000b86 pushl $L328
893: 873 0000DD7F fe 08 effffff8a6 callf $8,_writes
894: 874 0000DD86 # write32h( init_psl );
895: 875 0000DD86 dd effffff8a0 pushl _init_psl
896: 876 0000DD8C fe 08 effffff899 callf $8,_write32h
897: 877 0000DD93 # writes(", final PSL = ");
898: 878 0000DD93 .data 1
899: 879 00000b95 * L329:
900: 880 00000b95 * 2C2066696E616C2050534C203 .ascii ", final PSL = \0"
901: D2000
902: 881 00000ba4 * .text
903: 882 0000DD93 dd 8f00000b95 pushl $L329
904: 883 0000DD99 fe 08 effffff88c callf $8,_writes
905: 884 0000DDA0 # write32h( psl_val );
906: 885 0000DDA0 dd effffff886 pushl _psl_val
907: 886 0000DDA6 fe 08 effffff87f callf $8,_write32h
908: 887 0000DDAD # writes(", expected PSL = ");
909: 888 0000DDAD .data 1
910: 889 00000ba4 * L330:
911: 890 00000ba4 * 2C20657870656374656420505 .ascii ", expected PSL = \0"
912: 34C203D2000
913: 891 00000bb6 * .text
914: 892 0000DDAD dd 8f00000ba4 pushl $L330
915: 893 0000DDB3 fe 08 effffff872 callf $8,_writes
916: 894 0000DDBA # write32h( exp_psl );
917: 895 0000DDBA dd effffff86c pushl _exp_psl
918: 896 0000DDC0 fe 08 effffff865 callf $8,_write32h
919: 897 0000DDC7 # writes("\n");
920: 898 0000DDC7 .data 1
921: 899 00000bb6 * L331:
922: 900 00000bb6 * 0A00 .ascii "\12\0"
923: 901 00000bb8 * .text
924: 902 0000DDC7 dd 8f00000bb6 pushl $L331
925: 903 0000DDCD fe 08 effffff858 callf $8,_writes
926: 904 0000DDD4 # }
927: 905 0000DDD4 # if( halt_flg )
928: 906 0000DDD4 L326:
929: 907 0000DDD4 5d effffff852 tstl _halt_flg
930: 908 0000DDDA 31 09 jeql L332
931: 909 0000DDDC # addf_er_halt( BAD_PSL_HLT ); /* halt on the error */
932: 910 0000DDDC dd 03 pushl $3
933: 911 0000DDDE fe 08 ef00000207 callf $8,_addf_er_halt
934: 912 0000DDE5 # if( loop_on_err ) {
935: 913 0000DDE5 L332:
936: 914 0000DDE5 5d effffff841 tstl _loop_on_err
937: 915 0000DDEB 31 0a jeql L333
938: 916 0000DDED # force_loop = TRUE; /* set the force loop flag */
939: 917 0000DDED 0d 01 effffff838 movl $1,_force_loop
940: 918 0000DDF4 # asm("brw _addf_7_lp1");; /* and loop on the error */
941: 919 0000DDF4 13 ff0e brw _addf_7_lp1
942: 920 0000DDF7 # } /* end of loop on error */
943: 921 0000DDF7 # } /* end of PSL corruption error */
944: 922 0000DDF7 L333:
945: 923 0000DDF7 # } /* end of data WHILE loop */
946: 924 0000DDF7 L325:
947: 925 0000DDF7 L321:
948: 926 0000DDF7 6d effffff82f incl _index
949: 927 0000DDFD 13 fead jbr L323
950: 928 0000DE00 L322:
951: 929 0000DE00 # } /* end of subtest 7 */
952: 930 0000DE00 40 ret#2
953: 931 0000DE01 .set L317,0x0
954: 932 0000DE01 L319:
955: 933 0000DE01 13 fe89 jbr L320
956: 934 0000DE04 .data
957: 935 00000a78 * .text
958: 936 0000DE04 .align 1
959: 937 0000DE04 .globl _addf_8
960: 938 0000DE04 _addf_8:
961: 939 0000DE04 0000 .word L334
962: 940 0000DE06 #
963: 941 0000DE06 #
964: 942 0000DE06 #
965: 943 0000DE06 # /************************************************************************
966: 944 0000DE06 # *
967: 945 0000DE06 # * SUBTEST 8 - pipelined entry test
968: 946 0000DE06 # *
969: 947 0000DE06 # ************************************************************************/
970: 948 0000DE06 # addf_8()
971: 949 0000DE06 # {
972: 950 0000DE06 13 00e0 jbr L336
973: 951 0000DE09 L337:
974: 952 0000DE09 # force_loop = FALSE;
975: 953 0000DE09 4d effffff81d clrl _force_loop
976: 954 0000DE0F # subtest = 8;
977: 955 0000DE0F 0d 08 effffff816 movl $8,_subtest
978: 956 0000DE16 # for( index = 0; index < max_addf_1_index; index++ ) {
979: 957 0000DE16 4d effffff810 clrl _index
980: 958 0000DE1C L340:
981: 959 0000DE1C 1d effffff80a effffff805 cmpl _index,_max_addf_1_index
982: 960 0000DE27 91 03 13 00bc jgeq L339
983: 961 0000DE2C # sgl_ld_acc = addf_1_data[index].op_1; /* get operand 1 */
984: 962 0000DE2C 5c 0c effffff7f9 50 mull3 $12,_index,r0
985: 963 0000DE34 0d e000000000 effffff7ed movl _addf_1_data(r0),_sgl_ld_acc
986: 964 0000DE3F # sgl_value_1 = addf_1_data[index].op_2; /* get operand 2 */
987: 965 0000DE3F 5c 0c effffff7e6 50 mull3 $12,_index,r0
988: 966 0000DE47 0d e000000004 effffff7da movl _addf_1_data+4(r0),_sgl_value_1
989: 967 0000DE52 # sgl_expected = addf_1_data[index].exp; /* get expected result */
990: 968 0000DE52 5c 0c effffff7d3 50 mull3 $12,_index,r0
991: 969 0000DE5A 0d e000000008 effffff7c7 movl _addf_1_data+8(r0),_sgl_expected
992: 970 0000DE65 # /*
993: 971 0000DE65 # * If LOOP ON ERROR is set, this is the loop for this subtest.
994: 972 0000DE65 # * The force loop flag is set after the first error.
995: 973 0000DE65 # */
996: 974 0000DE65 # asm("_addf_8_lp1:");
997: 975 0000DE65 _addf_8_lp1:
998: 976 0000DE65 # asm("movl $0,r0"); /* clear r0 */
999: 977 0000DE65 0d 00 50 movl $0,r0
1000: 978 0000DE68 # asm("ldf r0"); /* load the Acc. with 0.0 */
1001: 979 0000DE68 06 50 ldf r0
1002: 980 0000DE6A # asm("addf _sgl_ld_acc"); /* add the 1st operand */
1003: 981 0000DE6A c6 effffff7bc addf _sgl_ld_acc
1004: 982 0000DE70 # asm("addf _sgl_value_1"); /* add the 2nd operand */
1005: 983 0000DE70 c6 effffff7b6 addf _sgl_value_1
1006: 984 0000DE76 # asm("stf _sgl_st_acc"); /* store the result */
1007: 985 0000DE76 26 effffff7b0 stf _sgl_st_acc
1008: 986 0000DE7C # if( force_loop )
1009: 987 0000DE7C 5d effffff7aa tstl _force_loop
1010: 988 0000DE82 31 02 jeql L341
1011: 989 0000DE84 # asm("brb _addf_8_lp1");; /* loop on the error */
1012: 990 0000DE84 11 df brb _addf_8_lp1
1013: 991 0000DE86 L341:
1014: 992 0000DE86 # /*
1015: 993 0000DE86 # * end error loop - test the results
1016: 994 0000DE86 # */
1017: 995 0000DE86 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1018: 996 0000DE86 1d effffff7a0 effffff79b cmpl _sgl_st_acc,_sgl_expected
1019: 997 0000DE91 31 4c jeql L342
1020: 998 0000DE93 # errcnt++; /* bump the error count */
1021: 999 0000DE93 6d effffff793 incl _errcnt
1022: 1000 0000DE99 # if( prt_error ) {
1023: 1001 0000DE99 5d effffff78d tstl _prt_error
1024: 1002 0000DE9F 31 1b jeql L343
1025: 1003 0000DEA1 # print_addf_er_hdr();
1026: 1004 0000DEA1 fe 04 ef00000044 callf $4,_print_addf_er_hdr
1027: 1005 0000DEA8 # writes(" (Piped Entry) - BAD FINAL ACC\n");
1028: 1006 0000DEA8 .data 1
1029: 1007 00000bb8 * L344:
1030: 1008 00000bb8 * 2028506970656420456E74727 .ascii " (Piped Entry) - BAD FINAL ACC\12\0"
1031: 929202D204241442046494E41
1032: 4C204143430A00
1033: 1009 00000bd8 * .text
1034: 1010 0000DEA8 dd 8f00000bb8 pushl $L344
1035: 1011 0000DEAE fe 08 effffff777 callf $8,_writes
1036: 1012 0000DEB5 # print_addf_data();
1037: 1013 0000DEB5 fe 04 ef00000092 callf $4,_print_addf_data
1038: 1014 0000DEBC # }
1039: 1015 0000DEBC # if( halt_flg )
1040: 1016 0000DEBC L343:
1041: 1017 0000DEBC 5d effffff76a tstl _halt_flg
1042: 1018 0000DEC2 31 09 jeql L345
1043: 1019 0000DEC4 # addf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1044: 1020 0000DEC4 dd 01 pushl $1
1045: 1021 0000DEC6 fe 08 ef0000011f callf $8,_addf_er_halt
1046: 1022 0000DECD # if( loop_on_err ) {
1047: 1023 0000DECD L345:
1048: 1024 0000DECD 5d effffff759 tstl _loop_on_err
1049: 1025 0000DED3 31 0a jeql L346
1050: 1026 0000DED5 # force_loop = TRUE; /* set the force loop flag */
1051: 1027 0000DED5 0d 01 effffff750 movl $1,_force_loop
1052: 1028 0000DEDC # asm("brw _addf_8_lp1"); /* and loop on the error */
1053: 1029 0000DEDC 13 ff86 brw _addf_8_lp1
1054: 1030 0000DEDF # } /* end of loop on error */
1055: 1031 0000DEDF # } /* end of compare error */
1056: 1032 0000DEDF L346:
1057: 1033 0000DEDF # } /* end of data While loop */
1058: 1034 0000DEDF L342:
1059: 1035 0000DEDF L338:
1060: 1036 0000DEDF 6d effffff747 incl _index
1061: 1037 0000DEE5 13 ff34 jbr L340
1062: 1038 0000DEE8 L339:
1063: 1039 0000DEE8 # } /* end of subtest 8 */
1064: 1040 0000DEE8 40 ret#2
1065: 1041 0000DEE9 .set L334,0x0
1066: 1042 0000DEE9 L336:
1067: 1043 0000DEE9 13 ff1d jbr L337
1068: 1044 0000DEEC .data
1069: 1045 00000a78 * .text
1070: 1046 0000DEEC .align 1
1071: 1047 0000DEEC .globl _print_addf_er_hdr
1072: 1048 0000DEEC _print_addf_er_hdr:
1073: 1049 0000DEEC 0000 .word L347
1074: 1050 0000DEEE #
1075: 1051 0000DEEE #
1076: 1052 0000DEEE #
1077: 1053 0000DEEE # /**************************************************************************
1078: 1054 0000DEEE # *
1079: 1055 0000DEEE # * PRINT THE ERROR HEADER
1080: 1056 0000DEEE # *
1081: 1057 0000DEEE # **************************************************************************/
1082: 1058 0000DEEE # print_addf_er_hdr()
1083: 1059 0000DEEE # {
1084: 1060 0000DEEE 11 5c jbr L349
1085: 1061 0000DEF0 L350:
1086: 1062 0000DEF0 # writes(" \n"); /* start a new print line */
1087: 1063 0000DEF0 .data 1
1088: 1064 00000bd8 * L351:
1089: 1065 00000bd8 * 200A00 .ascii " \12\0"
1090: 1066 00000bdb * .text
1091: 1067 0000DEF0 dd 8f00000bd8 pushl $L351
1092: 1068 0000DEF6 fe 08 effffff72f callf $8,_writes
1093: 1069 0000DEFD # writes("cycle: "); /* print the cycle count */
1094: 1070 0000DEFD .data 1
1095: 1071 00000bdb * L352:
1096: 1072 00000bdb * 6379636C653A2000 .ascii "cycle: \0"
1097: 1073 00000be3 * .text
1098: 1074 0000DEFD dd 8f00000bdb pushl $L352
1099: 1075 0000DF03 fe 08 effffff722 callf $8,_writes
1100: 1076 0000DF0A # writed( cycle );
1101: 1077 0000DF0A dd effffff71c pushl _cycle
1102: 1078 0000DF10 fe 08 effffff715 callf $8,_writed
1103: 1079 0000DF17 # writes(" ADDF test "); /* print the test number */
1104: 1080 0000DF17 .data 1
1105: 1081 00000be3 * L353:
1106: 1082 00000be3 * 2020414444462074657374200 .ascii " ADDF test \0"
1107: 0
1108: 1083 00000bf0 * .text
1109: 1084 0000DF17 dd 8f00000be3 pushl $L353
1110: 1085 0000DF1D fe 08 effffff708 callf $8,_writes
1111: 1086 0000DF24 # writed( test_no );
1112: 1087 0000DF24 dd effffff702 pushl _test_no
1113: 1088 0000DF2A fe 08 effffff6fb callf $8,_writed
1114: 1089 0000DF31 # writes(", subtest "); /* print the subtest no. */
1115: 1090 0000DF31 .data 1
1116: 1091 00000bf0 * L354:
1117: 1092 00000bf0 * 2C20737562746573742000 .ascii ", subtest \0"
1118: 1093 00000bfb * .text
1119: 1094 0000DF31 dd 8f00000bf0 pushl $L354
1120: 1095 0000DF37 fe 08 effffff6ee callf $8,_writes
1121: 1096 0000DF3E # writed( subtest );
1122: 1097 0000DF3E dd effffff6e8 pushl _subtest
1123: 1098 0000DF44 fe 08 effffff6e1 callf $8,_writed
1124: 1099 0000DF4B # }
1125: 1100 0000DF4B 40 ret#2
1126: 1101 0000DF4C .set L347,0x0
1127: 1102 0000DF4C L349:
1128: 1103 0000DF4C 11 a2 jbr L350
1129: 1104 0000DF4E .data
1130: 1105 00000a78 * .text
1131: 1106 0000DF4E .align 1
1132: 1107 0000DF4E .globl _print_addf_data
1133: 1108 0000DF4E _print_addf_data:
1134: 1109 0000DF4E 0000 .word L355
1135: 1110 0000DF50 #
1136: 1111 0000DF50 #
1137: 1112 0000DF50 #
1138: 1113 0000DF50 # /**************************************************************************
1139: 1114 0000DF50 # *
1140: 1115 0000DF50 # * PRINT THE DATA AND STORE RESULTS
1141: 1116 0000DF50 # *
1142: 1117 0000DF50 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
1143: 1118 0000DF50 # * operand = xxxxxxxx, expected = xxxxxxxx
1144: 1119 0000DF50 # **************************************************************************/
1145: 1120 0000DF50 # print_addf_data()
1146: 1121 0000DF50 # {
1147: 1122 0000DF50 13 0095 jbr L357
1148: 1123 0000DF53 L358:
1149: 1124 0000DF53 # writes("initial Acc = ");
1150: 1125 0000DF53 .data 1
1151: 1126 00000bfb * L359:
1152: 1127 00000bfb * 696E697469616C20416363203 .ascii "initial Acc = \0"
1153: D2000
1154: 1128 00000c0a * .text
1155: 1129 0000DF53 dd 8f00000bfb pushl $L359
1156: 1130 0000DF59 fe 08 effffff6cc callf $8,_writes
1157: 1131 0000DF60 # write32h( sgl_ld_acc );
1158: 1132 0000DF60 dd effffff6c6 pushl _sgl_ld_acc
1159: 1133 0000DF66 fe 08 effffff6bf callf $8,_write32h
1160: 1134 0000DF6D # writes(", stored = ");
1161: 1135 0000DF6D .data 1
1162: 1136 00000c0a * L360:
1163: 1137 00000c0a * 2C2020202073746F726564203 .ascii ", stored = \0"
1164: D2000
1165: 1138 00000c19 * .text
1166: 1139 0000DF6D dd 8f00000c0a pushl $L360
1167: 1140 0000DF73 fe 08 effffff6b2 callf $8,_writes
1168: 1141 0000DF7A # write32h( sgl_st_acc );
1169: 1142 0000DF7A dd effffff6ac pushl _sgl_st_acc
1170: 1143 0000DF80 fe 08 effffff6a5 callf $8,_write32h
1171: 1144 0000DF87 # writes(", data index = ");
1172: 1145 0000DF87 .data 1
1173: 1146 00000c19 * L361:
1174: 1147 00000c19 * 2C20206461746120696E64657 .ascii ", data index = \0"
1175: 8203D2000
1176: 1148 00000c2a * .text
1177: 1149 0000DF87 dd 8f00000c19 pushl $L361
1178: 1150 0000DF8D fe 08 effffff698 callf $8,_writes
1179: 1151 0000DF94 # writed( index );
1180: 1152 0000DF94 dd effffff692 pushl _index
1181: 1153 0000DF9A fe 08 effffff68b callf $8,_writed
1182: 1154 0000DFA1 # writec('\n');
1183: 1155 0000DFA1 dd 0a pushl $10
1184: 1156 0000DFA3 fe 08 effffff682 callf $8,_writec
1185: 1157 0000DFAA # writes(" operand = ");
1186: 1158 0000DFAA .data 1
1187: 1159 00000c2a * L363:
1188: 1160 00000c2a * 202020206F706572616E64203 .ascii " operand = \0"
1189: D2000
1190: 1161 00000c39 * .text
1191: 1162 0000DFAA dd 8f00000c2a pushl $L363
1192: 1163 0000DFB0 fe 08 effffff675 callf $8,_writes
1193: 1164 0000DFB7 # write32h( sgl_value_1 );
1194: 1165 0000DFB7 dd effffff66f pushl _sgl_value_1
1195: 1166 0000DFBD fe 08 effffff668 callf $8,_write32h
1196: 1167 0000DFC4 # writes(", expected = ");
1197: 1168 0000DFC4 .data 1
1198: 1169 00000c39 * L364:
1199: 1170 00000c39 * 2C20206578706563746564203 .ascii ", expected = \0"
1200: D2000
1201: 1171 00000c48 * .text
1202: 1172 0000DFC4 dd 8f00000c39 pushl $L364
1203: 1173 0000DFCA fe 08 effffff65b callf $8,_writes
1204: 1174 0000DFD1 # write32h( sgl_expected );
1205: 1175 0000DFD1 dd effffff655 pushl _sgl_expected
1206: 1176 0000DFD7 fe 08 effffff64e callf $8,_write32h
1207: 1177 0000DFDE # writec('\n');
1208: 1178 0000DFDE dd 0a pushl $10
1209: 1179 0000DFE0 fe 08 effffff645 callf $8,_writec
1210: 1180 0000DFE7 # }
1211: 1181 0000DFE7 40 ret#2
1212: 1182 0000DFE8 .set L355,0x0
1213: 1183 0000DFE8 L357:
1214: 1184 0000DFE8 13 ff68 jbr L358
1215: 1185 0000DFEB .data
1216: 1186 00000a78 * .text
1217: 1187 0000DFEB 00 .align 1
1218: 1188 0000DFEC .globl _addf_er_halt
1219: 1189 0000DFEC _addf_er_halt:
1220: 1190 0000DFEC 0000 .word L365
1221: 1191 0000DFEE #
1222: 1192 0000DFEE #
1223: 1193 0000DFEE #
1224: 1194 0000DFEE # /**************************************************************************
1225: 1195 0000DFEE # *
1226: 1196 0000DFEE # * HALT ON ERROR ROUTINE
1227: 1197 0000DFEE # *
1228: 1198 0000DFEE # **************************************************************************/
1229: 1199 0000DFEE # addf_er_halt( halt_code )
1230: 1200 0000DFEE # int halt_code;
1231: 1201 0000DFEE # {
1232: 1202 0000DFEE 13 00af jbr L367
1233: 1203 0000DFF1 L368:
1234: 1204 0000DFF1 # sgl_dummy1 = halt_code; /* get the error type */
1235: 1205 0000DFF1 0d ad04 effffff633 movl 4(fp),_sgl_dummy1
1236: 1206 0000DFF9 # asm("movl _test_no,r0"); /* r0 = test number */
1237: 1207 0000DFF9 0d effffff62d 50 movl _test_no,r0
1238: 1208 0000E000 # asm("movl _subtest,r1"); /* r1 = subtest number */
1239: 1209 0000E000 0d effffff626 51 movl _subtest,r1
1240: 1210 0000E007 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1241: 1211 0000E007 0d effffff61f 52 movl _sgl_dummy1,r2
1242: 1212 0000E00E # asm("movl _cycle,r3"); /* r3 = cycle count */
1243: 1213 0000E00E 0d effffff618 53 movl _cycle,r3
1244: 1214 0000E015 # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1245: 1215 0000E015 0d effffff611 54 movl _sgl_ld_acc,r4
1246: 1216 0000E01C # asm("movl _sgl_value_1,r5"); /* r5 = data added */
1247: 1217 0000E01C 0d effffff60a 55 movl _sgl_value_1,r5
1248: 1218 0000E023 # asm("movl _sgl_st_acc,r6"); /* r6 = data stored */
1249: 1219 0000E023 0d effffff603 56 movl _sgl_st_acc,r6
1250: 1220 0000E02A # if( halt_code == BAD_ACC_HLT ) {
1251: 1221 0000E02A 1d ad04 01 cmpl 4(fp),$1
1252: 1222 0000E02E 21 10 jneq L369
1253: 1223 0000E030 # asm("movl _sgl_expected,r7"); /* r7 = data expected */
1254: 1224 0000E030 0d effffff5f6 57 movl _sgl_expected,r7
1255: 1225 0000E037 # asm("movl _index,r8"); /* r8 = data index */
1256: 1226 0000E037 0d effffff5ef 58 movl _index,r8
1257: 1227 0000E03E # } else
1258: 1228 0000E03E 11 5e jbr L370
1259: 1229 0000E040 L369:
1260: 1230 0000E040 # if( halt_code == BAD_REG_HLT ) {
1261: 1231 0000E040 1d ad04 02 cmpl 4(fp),$2
1262: 1232 0000E044 21 3d jneq L371
1263: 1233 0000E046 # sgl_dummy1 = load_regs[index2];
1264: 1234 0000E046 0d effffff5e0 50 movl _index2,r0
1265: 1235 0000E04D 0d 40effffff5d8 movl _load_regs[r0],_sgl_dummy1
1266: effffff5d3
1267: 1236 0000E059 # sgl_dummy2 = store_regs[index2];
1268: 1237 0000E059 0d effffff5cd 50 movl _index2,r0
1269: 1238 0000E060 0d 40effffff5c5 movl _store_regs[r0],_sgl_dummy2
1270: effffff5c0
1271: 1239 0000E06C # asm("movl _index2,r7"); /* r7 = bad register # */
1272: 1240 0000E06C 0d effffff5ba 57 movl _index2,r7
1273: 1241 0000E073 # asm("movl _sgl_dummy2,r8"); /* r8 = actual value */
1274: 1242 0000E073 0d effffff5b3 58 movl _sgl_dummy2,r8
1275: 1243 0000E07A # asm("movl _sgl_dummy1,r9"); /* r9 = expected value */
1276: 1244 0000E07A 0d effffff5ac 59 movl _sgl_dummy1,r9
1277: 1245 0000E081 # } else
1278: 1246 0000E081 11 1b jbr L372
1279: 1247 0000E083 L371:
1280: 1248 0000E083 # if( halt_code == BAD_PSL_HLT ) {
1281: 1249 0000E083 1d ad04 03 cmpl 4(fp),$3
1282: 1250 0000E087 21 15 jneq L373
1283: 1251 0000E089 # asm("movl _init_psl,r7"); /* r7 = initial PSL */
1284: 1252 0000E089 0d effffff59d 57 movl _init_psl,r7
1285: 1253 0000E090 # asm("movl _psl_val,r8"); /* r8 = final PSL */
1286: 1254 0000E090 0d effffff596 58 movl _psl_val,r8
1287: 1255 0000E097 # asm("movl _exp_psl,r9"); /* r9 = expected PSL */
1288: 1256 0000E097 0d effffff58f 59 movl _exp_psl,r9
1289: 1257 0000E09E # };
1290: 1258 0000E09E L373:
1291: 1259 0000E09E L372:
1292: 1260 0000E09E L370:
1293: 1261 0000E09E # asm("halt"); /* HALT ... */
1294: 1262 0000E09E 00 halt
1295: 1263 0000E09F # }
1296: 1264 0000E09F 40 ret#2
1297: 1265 0000E0A0 .set L365,0x0
1298: 1266 0000E0A0 L367:
1299: 1267 0000E0A0 13 ff4e jbr L368
1300: 1268 0000E0A3 .data
1301: 1268 0001B6CF .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.