|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000a60 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _logf
6: 6 00000000 _logf:
7: 7 000215BC 0000 .word L215
8: 8 000215BE # #include "fpp_defs.h"
9: 9 000215BE #
10: 10 000215BE #
11: 11 000215BE #
12: 12 000215BE # /***************************************************************************
13: 13 000215BE # *
14: 14 000215BE # * LOGF - SINGLE PRECISION FLOATING POINT LOGF FUNCTION TEST
15: 15 000215BE # *
16: 16 000215BE # * LOGF TEST MONITOR
17: 17 000215BE # *
18: 18 000215BE # *****************************************************************************/
19: 19 000215BE # logf()
20: 20 000215BE # {
21: 21 000215BE 11 4f jbr L217
22: 22 000215C0 L218:
23: 23 000215C0 # asm(".globl _logf_t");
24: 24 000215C0 .globl _logf_t
25: 25 000215C0 # asm("_logf_t:"); /* entry address */
26: 26 000215C0 _logf_t:
27: 27 000215C0 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
28: 28 000215C0 1d effffffff6 01 cmpl _cycle,$1
29: 29 000215C7 21 15 jneq L219
30: 30 000215C9 5d efffffffed tstl _prt_hdrs
31: 31 000215CF 31 0d jeql L219
32: 32 000215D1 # {
33: 33 000215D1 # writes(" LOGF");
34: 34 000215D1 .data 1
35: 35 00000a60 * L221:
36: 36 00000a60 * 204C4F474600 .ascii " LOGF\0"
37: 37 00000a66 * .text
38: 38 000215D1 dd 8f00000a60 pushl $L221
39: 39 000215D7 fe 08 efffffffde callf $8,_writes
40: 40 000215DE # }
41: 41 000215DE # logf_1(); /* test log function w/ delay */
42: 42 000215DE L219:
43: 43 000215DE fe 04 ef0000002d callf $4,_logf_1
44: 44 000215E5 # logf_2(); /* test log function */
45: 45 000215E5 fe 04 ef00000198 callf $4,_logf_2
46: 46 000215EC # logf_3(); /* register corruption */
47: 47 000215EC fe 04 ef000002f1 callf $4,_logf_3
48: 48 000215F3 # logf_4(); /* test the PSL */
49: 49 000215F3 fe 04 ef000004d4 callf $4,_logf_4
50: 50 000215FA # logf_5(); /* pipelined entry */
51: 51 000215FA fe 04 ef0000067d callf $4,_logf_5
52: 52 00021601 # logf_6(); /* pipelined exit */
53: 53 00021601 fe 04 ef000007d2 callf $4,_logf_6
54: 54 00021608 # asm("jmp *return"); /* return to the test monitor */
55: 55 00021608 71 ffffffffae jmp *return
56: 56 0002160E # }
57: 57 0002160E 40 ret#2
58: 58 0002160F .set L215,0x0
59: 59 0002160F L217:
60: 60 0002160F 11 af jbr L218
61: 61 00021611 .data
62: 62 00000a60 * .text
63: 63 00021611 00 .align 1
64: 64 00021612 .globl _logf_1
65: 65 00021612 _logf_1:
66: 66 00021612 0000 .word L228
67: 67 00021614 #
68: 68 00021614 # /***************************************************************************
69: 69 00021614 # *
70: 70 00021614 # * SUBTEST 1 - LOGF FUNCTION
71: 71 00021614 # *
72: 72 00021614 # ***************************************************************************/
73: 73 00021614 # logf_1()
74: 74 00021614 # {
75: 75 00021614 13 016a jbr L230
76: 76 00021617 L231:
77: 77 00021617 # #define DELAY 15 /* delay 30 ticks between LOGF & STF */
78: 78 00021617 # force_loop = FALSE; /* clear the LOOP flag */
79: 79 00021617 4d efffffff9f clrl _force_loop
80: 80 0002161D # subtest = 1;
81: 81 0002161D 0d 01 efffffff98 movl $1,_subtest
82: 82 00021624 # index = 0;
83: 83 00021624 4d efffffff92 clrl _index
84: 84 0002162A # do
85: 85 0002162A L234:
86: 86 0002162A # {
87: 87 0002162A # sgl_ld_acc = logf_1_data[index].ld; /* get the operand */
88: 88 0002162A 0d efffffff8c 50 movl _index,r0
89: 89 00021631 48 03 50 50 shll $3,r0,r0
90: 90 00021635 0d e000000000 efffffff7c movl _logf_1_data(r0),_sgl_ld_acc
91: 91 00021640 # sgl_expected = logf_1_data[index].exp; /* get expected results */
92: 92 00021640 0d efffffff76 50 movl _index,r0
93: 93 00021647 48 03 50 50 shll $3,r0,r0
94: 94 0002164B 0d e000000004 efffffff66 movl _logf_1_data+4(r0),_sgl_expected
95: 95 00021656 # sgl_dummy1 = DELAY;
96: 96 00021656 0d 0f efffffff5f movl $15,_sgl_dummy1
97: 97 0002165D # /*
98: 98 0002165D # * If LOOP ON ERROR is set, this is the loop for this subtest.
99: 99 0002165D # * The force loop flag is set after the first error.
100: 100 0002165D # */
101: 101 0002165D # asm("_logf_1_lp1:");
102: 102 0002165D _logf_1_lp1:
103: 103 0002165D # asm("movl _sgl_ld_acc,r4"); /* set the data to load */
104: 104 0002165D 0d efffffff59 54 movl _sgl_ld_acc,r4
105: 105 00021664 # asm("ldf r4"); /* load the accumulator */
106: 106 00021664 06 54 ldf r4
107: 107 00021666 # asm("movl _sgl_dummy1,r0"); /* get the delay factor */
108: 108 00021666 0d efffffff50 50 movl _sgl_dummy1,r0
109: 109 0002166D # asm("logf"); /* get ACC.'s log */
110: 110 0002166D 35 logf
111: 111 0002166E # asm("1:");
112: 112 0002166E 1:
113: 113 0002166E # asm("decl r0"); /* delay to let the LOGF */
114: 114 0002166E 7d 50 decl r0
115: 115 00021670 # asm("bgtr 1b"); /* instruction finish */
116: 116 00021670 41 fc bgtr 1b
117: 117 00021672 # asm("stf r5"); /* store the result */
118: 118 00021672 26 55 stf r5
119: 119 00021674 # if( force_loop )
120: 120 00021674 5d efffffff42 tstl _force_loop
121: 121 0002167A 31 02 jeql L235
122: 122 0002167C # asm("brb _logf_1_lp1");; /* loop on the error */
123: 123 0002167C 11 df brb _logf_1_lp1
124: 124 0002167E L235:
125: 125 0002167E # /*
126: 126 0002167E # * end error loop
127: 127 0002167E # */
128: 128 0002167E # asm("movl r5,_sgl_st_acc"); /* save the result */
129: 129 0002167E 0d 55 efffffff37 movl r5,_sgl_st_acc
130: 130 00021685 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
131: 131 00021685 1d efffffff31 efffffff2c cmpl _sgl_st_acc,_sgl_expected
132: 132 00021690 21 03 13 00d2 jeql L236
133: 133 00021695 # errcnt++; /* bump the error count */
134: 134 00021695 6d efffffff21 incl _errcnt
135: 135 0002169B # if ( prt_error ) {
136: 136 0002169B 5d efffffff1b tstl _prt_error
137: 137 000216A1 21 03 13 009b jeql L237
138: 138 000216A6 # writes(" \n"); /* start a new print line */
139: 139 000216A6 .data 1
140: 140 00000a66 * L238:
141: 141 00000a66 * 200A00 .ascii " \12\0"
142: 142 00000a69 * .text
143: 143 000216A6 dd 8f00000a66 pushl $L238
144: 144 000216AC fe 08 efffffff09 callf $8,_writes
145: 145 000216B3 # writes("cycle: ");
146: 146 000216B3 .data 1
147: 147 00000a69 * L239:
148: 148 00000a69 * 6379636C653A2000 .ascii "cycle: \0"
149: 149 00000a71 * .text
150: 150 000216B3 dd 8f00000a69 pushl $L239
151: 151 000216B9 fe 08 effffffefc callf $8,_writes
152: 152 000216C0 # writed( cycle );
153: 153 000216C0 dd effffffef6 pushl _cycle
154: 154 000216C6 fe 08 effffffeef callf $8,_writed
155: 155 000216CD # writes(" LOGF test ");
156: 156 000216CD .data 1
157: 157 00000a71 * L241:
158: 158 00000a71 * 2020204C4F474620746573742 .ascii " LOGF test \0"
159: 000
160: 159 00000a7f * .text
161: 160 000216CD dd 8f00000a71 pushl $L241
162: 161 000216D3 fe 08 effffffee2 callf $8,_writes
163: 162 000216DA # writed( test_no );
164: 163 000216DA dd effffffedc pushl _test_no
165: 164 000216E0 fe 08 effffffed5 callf $8,_writed
166: 165 000216E7 # writes(", subtest 1 (delayed store) - BAD FINAL ACC\n");
167: 166 000216E7 .data 1
168: 167 00000a7f * L242:
169: 168 00000a7f * 2C20737562746573742031202 .ascii ", subtest 1 (delayed store) - BAD FINAL ACC\12\0"
170: 864656C617965642073746F72
171: 6529202D204241442046494E4
172: 14C204143430A00
173: 169 00000aac * .text
174: 170 000216E7 dd 8f00000a7f pushl $L242
175: 171 000216ED fe 08 effffffec8 callf $8,_writes
176: 172 000216F4 # print_logf_data();
177: 173 000216F4 fe 04 ef0000083b callf $4,_print_logf_data
178: 174 000216FB # writes(", data index = ");
179: 175 000216FB .data 1
180: 176 00000aac * L244:
181: 177 00000aac * 2C20206461746120696E64657 .ascii ", data index = \0"
182: 8203D2000
183: 178 00000abd * .text
184: 179 000216FB dd 8f00000aac pushl $L244
185: 180 00021701 fe 08 effffffeb4 callf $8,_writes
186: 181 00021708 # writed( index );
187: 182 00021708 dd effffffeae pushl _index
188: 183 0002170E fe 08 effffffea7 callf $8,_writed
189: 184 00021715 # writec('\n');
190: 185 00021715 dd 0a pushl $10
191: 186 00021717 fe 08 effffffe9e callf $8,_writec
192: 187 0002171E # writes(" expected = ");
193: 188 0002171E .data 1
194: 189 00000abd * L246:
195: 190 00000abd * 2020202020202020202020202 .ascii " expected = \0"
196: 0202020202020202020202020
197: 206578706563746564203D200
198: 0
199: 191 00000ae3 * .text
200: 192 0002171E dd 8f00000abd pushl $L246
201: 193 00021724 fe 08 effffffe91 callf $8,_writes
202: 194 0002172B # write32h( sgl_expected );
203: 195 0002172B dd effffffe8b pushl _sgl_expected
204: 196 00021731 fe 08 effffffe84 callf $8,_write32h
205: 197 00021738 # writec('\n');
206: 198 00021738 dd 0a pushl $10
207: 199 0002173A fe 08 effffffe7b callf $8,_writec
208: 200 00021741 # }
209: 201 00021741 # if ( halt_flg ) /* halt on error? */
210: 202 00021741 L237:
211: 203 00021741 5d effffffe75 tstl _halt_flg
212: 204 00021747 31 09 jeql L248
213: 205 00021749 # logf_er_halt( BAD_ACC_HLT );
214: 206 00021749 dd 01 pushl $1
215: 207 0002174B fe 08 ef00000820 callf $8,_logf_er_halt
216: 208 00021752 # if ( loop_on_err )
217: 209 00021752 L248:
218: 210 00021752 5d effffffe64 tstl _loop_on_err
219: 211 00021758 31 0d jeql L250
220: 212 0002175A # {
221: 213 0002175A # force_loop = TRUE; /* set the force loop flag */
222: 214 0002175A 0d 01 effffffe5b movl $1,_force_loop
223: 215 00021761 # asm("jmp _logf_1_lp1"); /* and loop */
224: 216 00021761 71 effffffef6 jmp _logf_1_lp1
225: 217 00021767 # }
226: 218 00021767 # } /* end of compare error */
227: 219 00021767 L250:
228: 220 00021767 # } while( index++ < max_logf_1_index );
229: 221 00021767 L236:
230: 222 00021767 L233:
231: 223 00021767 0d effffffe4f 50 movl _index,r0
232: 224 0002176E 6d effffffe48 incl _index
233: 225 00021774 1d 50 effffffe41 cmpl r0,_max_logf_1_index
234: 226 0002177B 81 03 13 feaa jlss L234
235: 227 00021780 L232:
236: 228 00021780 # } /* end of subtest 1 */
237: 229 00021780 40 ret#2
238: 230 00021781 .set L228,0x0
239: 231 00021781 L230:
240: 232 00021781 13 fe93 jbr L231
241: 233 00021784 .data
242: 234 00000a60 * .text
243: 235 00021784 .align 1
244: 236 00021784 .globl _logf_2
245: 237 00021784 _logf_2:
246: 238 00021784 0000 .word L251
247: 239 00021786 #
248: 240 00021786 #
249: 241 00021786 #
250: 242 00021786 # /***************************************************************************
251: 243 00021786 # *
252: 244 00021786 # * SUBTEST 2 - LOGF FUNCTION
253: 245 00021786 # *
254: 246 00021786 # ***************************************************************************/
255: 247 00021786 # logf_2()
256: 248 00021786 # {
257: 249 00021786 13 0158 jbr L253
258: 250 00021789 L254:
259: 251 00021789 # force_loop = FALSE; /* clear the LOOP flag */
260: 252 00021789 4d effffffe2d clrl _force_loop
261: 253 0002178F # subtest = 2;
262: 254 0002178F 0d 02 effffffe26 movl $2,_subtest
263: 255 00021796 # index = 0;
264: 256 00021796 4d effffffe20 clrl _index
265: 257 0002179C # do
266: 258 0002179C L257:
267: 259 0002179C # {
268: 260 0002179C # sgl_ld_acc = logf_1_data[index].ld; /* get the operand */
269: 261 0002179C 0d effffffe1a 50 movl _index,r0
270: 262 000217A3 48 03 50 50 shll $3,r0,r0
271: 263 000217A7 0d e000000000 effffffe0a movl _logf_1_data(r0),_sgl_ld_acc
272: 264 000217B2 # sgl_expected = logf_1_data[index].exp; /* get expected results */
273: 265 000217B2 0d effffffe04 50 movl _index,r0
274: 266 000217B9 48 03 50 50 shll $3,r0,r0
275: 267 000217BD 0d e000000004 effffffdf4 movl _logf_1_data+4(r0),_sgl_expected
276: 268 000217C8 # /*
277: 269 000217C8 # * If LOOP ON ERROR is set, this is the loop for this subtest.
278: 270 000217C8 # * The force loop flag is set after the first error.
279: 271 000217C8 # */
280: 272 000217C8 # asm("_logf_2_lp1:");
281: 273 000217C8 _logf_2_lp1:
282: 274 000217C8 # asm("movl _sgl_ld_acc,r4"); /* set the data to load */
283: 275 000217C8 0d effffffdee 54 movl _sgl_ld_acc,r4
284: 276 000217CF # asm("ldf r4"); /* load the accumulator */
285: 277 000217CF 06 54 ldf r4
286: 278 000217D1 # asm("logf"); /* get ACC.'s log */
287: 279 000217D1 35 logf
288: 280 000217D2 # asm("stf r5"); /* store the result */
289: 281 000217D2 26 55 stf r5
290: 282 000217D4 # if( force_loop )
291: 283 000217D4 5d effffffde2 tstl _force_loop
292: 284 000217DA 31 02 jeql L258
293: 285 000217DC # asm("brb _logf_2_lp1");; /* loop on the error */
294: 286 000217DC 11 ea brb _logf_2_lp1
295: 287 000217DE L258:
296: 288 000217DE # /*
297: 289 000217DE # * end error loop
298: 290 000217DE # */
299: 291 000217DE # asm("movl r5,_sgl_st_acc"); /* save the result */
300: 292 000217DE 0d 55 effffffdd7 movl r5,_sgl_st_acc
301: 293 000217E5 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
302: 294 000217E5 1d effffffdd1 effffffdcc cmpl _sgl_st_acc,_sgl_expected
303: 295 000217F0 21 03 13 00d2 jeql L259
304: 296 000217F5 # errcnt++; /* bump the error count */
305: 297 000217F5 6d effffffdc1 incl _errcnt
306: 298 000217FB # if ( prt_error ) {
307: 299 000217FB 5d effffffdbb tstl _prt_error
308: 300 00021801 21 03 13 009b jeql L260
309: 301 00021806 # writes(" \n"); /* start a new print line */
310: 302 00021806 .data 1
311: 303 00000ae3 * L261:
312: 304 00000ae3 * 200A00 .ascii " \12\0"
313: 305 00000ae6 * .text
314: 306 00021806 dd 8f00000ae3 pushl $L261
315: 307 0002180C fe 08 effffffda9 callf $8,_writes
316: 308 00021813 # writes("cycle: ");
317: 309 00021813 .data 1
318: 310 00000ae6 * L262:
319: 311 00000ae6 * 6379636C653A2000 .ascii "cycle: \0"
320: 312 00000aee * .text
321: 313 00021813 dd 8f00000ae6 pushl $L262
322: 314 00021819 fe 08 effffffd9c callf $8,_writes
323: 315 00021820 # writed( cycle );
324: 316 00021820 dd effffffd96 pushl _cycle
325: 317 00021826 fe 08 effffffd8f callf $8,_writed
326: 318 0002182D # writes(" LOGF test ");
327: 319 0002182D .data 1
328: 320 00000aee * L263:
329: 321 00000aee * 2020204C4F474620746573742 .ascii " LOGF test \0"
330: 000
331: 322 00000afc * .text
332: 323 0002182D dd 8f00000aee pushl $L263
333: 324 00021833 fe 08 effffffd82 callf $8,_writes
334: 325 0002183A # writed( test_no );
335: 326 0002183A dd effffffd7c pushl _test_no
336: 327 00021840 fe 08 effffffd75 callf $8,_writed
337: 328 00021847 # writes(", subtest 2 (immediate store) - BAD FINAL ACC\n");
338: 329 00021847 .data 1
339: 330 00000afc * L264:
340: 331 00000afc * 2C20737562746573742032202 .ascii ", subtest 2 (immediate store) - BAD FINAL ACC\12\0"
341: 8696D6D656469617465207374
342: 6F726529202D2042414420464
343: 94E414C204143430A00
344: 332 00000b2b * .text
345: 333 00021847 dd 8f00000afc pushl $L264
346: 334 0002184D fe 08 effffffd68 callf $8,_writes
347: 335 00021854 # print_logf_data();
348: 336 00021854 fe 04 ef000006db callf $4,_print_logf_data
349: 337 0002185B # writes(", data index = ");
350: 338 0002185B .data 1
351: 339 00000b2b * L265:
352: 340 00000b2b * 2C20206461746120696E64657 .ascii ", data index = \0"
353: 8203D2000
354: 341 00000b3c * .text
355: 342 0002185B dd 8f00000b2b pushl $L265
356: 343 00021861 fe 08 effffffd54 callf $8,_writes
357: 344 00021868 # writed( index );
358: 345 00021868 dd effffffd4e pushl _index
359: 346 0002186E fe 08 effffffd47 callf $8,_writed
360: 347 00021875 # writec('\n');
361: 348 00021875 dd 0a pushl $10
362: 349 00021877 fe 08 effffffd3e callf $8,_writec
363: 350 0002187E # writes(" expected = ");
364: 351 0002187E .data 1
365: 352 00000b3c * L266:
366: 353 00000b3c * 2020202020202020202020202 .ascii " expected = \0"
367: 0202020202020202020202020
368: 206578706563746564203D200
369: 0
370: 354 00000b62 * .text
371: 355 0002187E dd 8f00000b3c pushl $L266
372: 356 00021884 fe 08 effffffd31 callf $8,_writes
373: 357 0002188B # write32h( sgl_expected );
374: 358 0002188B dd effffffd2b pushl _sgl_expected
375: 359 00021891 fe 08 effffffd24 callf $8,_write32h
376: 360 00021898 # writec('\n');
377: 361 00021898 dd 0a pushl $10
378: 362 0002189A fe 08 effffffd1b callf $8,_writec
379: 363 000218A1 # }
380: 364 000218A1 # if ( halt_flg ) /* halt on error? */
381: 365 000218A1 L260:
382: 366 000218A1 5d effffffd15 tstl _halt_flg
383: 367 000218A7 31 09 jeql L267
384: 368 000218A9 # logf_er_halt( BAD_ACC_HLT );
385: 369 000218A9 dd 01 pushl $1
386: 370 000218AB fe 08 ef000006c0 callf $8,_logf_er_halt
387: 371 000218B2 # if ( loop_on_err )
388: 372 000218B2 L267:
389: 373 000218B2 5d effffffd04 tstl _loop_on_err
390: 374 000218B8 31 0d jeql L268
391: 375 000218BA # {
392: 376 000218BA # force_loop = TRUE; /* set the force loop flag */
393: 377 000218BA 0d 01 effffffcfb movl $1,_force_loop
394: 378 000218C1 # asm("jmp _logf_2_lp1"); /* and loop */
395: 379 000218C1 71 efffffff01 jmp _logf_2_lp1
396: 380 000218C7 # }
397: 381 000218C7 # } /* end of compare error */
398: 382 000218C7 L268:
399: 383 000218C7 # } while( index++ < max_logf_1_index );
400: 384 000218C7 L259:
401: 385 000218C7 L256:
402: 386 000218C7 0d effffffcef 50 movl _index,r0
403: 387 000218CE 6d effffffce8 incl _index
404: 388 000218D4 1d 50 effffffce1 cmpl r0,_max_logf_1_index
405: 389 000218DB 81 03 13 febc jlss L257
406: 390 000218E0 L255:
407: 391 000218E0 # } /* end of subtest 2 */
408: 392 000218E0 40 ret#2
409: 393 000218E1 .set L251,0x0
410: 394 000218E1 L253:
411: 395 000218E1 13 fea5 jbr L254
412: 396 000218E4 .data
413: 397 00000a60 * .text
414: 398 000218E4 .align 1
415: 399 000218E4 .globl _logf_3
416: 400 000218E4 _logf_3:
417: 401 000218E4 0000 .word L269
418: 402 000218E6 #
419: 403 000218E6 #
420: 404 000218E6 #
421: 405 000218E6 # /***************************************************************************
422: 406 000218E6 # *
423: 407 000218E6 # * SUBTEST 3 - REGISTER INTEGRITY WITH THE LOGF FUNCTION
424: 408 000218E6 # *
425: 409 000218E6 # ***************************************************************************/
426: 410 000218E6 # logf_3()
427: 411 000218E6 # {
428: 412 000218E6 13 01e1 jbr L271
429: 413 000218E9 L272:
430: 414 000218E9 # fill_reg_buf( load_regs ); /* set reg values to load */
431: 415 000218E9 dd 8f00000000 pushl $_load_regs
432: 416 000218EF fe 08 effffffcc6 callf $8,_fill_reg_buf
433: 417 000218F6 # force_loop = FALSE; /* clear the LOOP flag */
434: 418 000218F6 4d effffffcc0 clrl _force_loop
435: 419 000218FC # subtest = 3;
436: 420 000218FC 0d 03 effffffcb9 movl $3,_subtest
437: 421 00021903 # index = 0;
438: 422 00021903 4d effffffcb3 clrl _index
439: 423 00021909 # do
440: 424 00021909 L276:
441: 425 00021909 # {
442: 426 00021909 # sgl_ld_acc = logf_1_data[index].ld; /* get the operand */
443: 427 00021909 0d effffffcad 50 movl _index,r0
444: 428 00021910 48 03 50 50 shll $3,r0,r0
445: 429 00021914 0d e000000000 effffffc9d movl _logf_1_data(r0),_sgl_ld_acc
446: 430 0002191F # sgl_expected = logf_1_data[index].exp; /* get expected results */
447: 431 0002191F 0d effffffc97 50 movl _index,r0
448: 432 00021926 48 03 50 50 shll $3,r0,r0
449: 433 0002192A 0d e000000004 effffffc87 movl _logf_1_data+4(r0),_sgl_expected
450: 434 00021935 # /*
451: 435 00021935 # * If LOOP ON ERROR is set, this is the loop for this subtest.
452: 436 00021935 # * The force loop flag is set after the first error.
453: 437 00021935 # */
454: 438 00021935 # asm("_logf_3_lp1:");
455: 439 00021935 _logf_3_lp1:
456: 440 00021935 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
457: 441 00021935 ab 891fff effffffc7e loadr $0x1fff,_load_regs
458: 442 0002193E # asm("ldf _sgl_ld_acc"); /* load the accumulator */
459: 443 0002193E 06 effffffc78 ldf _sgl_ld_acc
460: 444 00021944 # asm("logf"); /* get ACC.'s log */
461: 445 00021944 35 logf
462: 446 00021945 # asm("stf _sgl_st_acc"); /* store the result */
463: 447 00021945 26 effffffc71 stf _sgl_st_acc
464: 448 0002194B # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
465: 449 0002194B bb 891fff effffffc68 storer $0x1fff,_store_regs
466: 450 00021954 # if( force_loop )
467: 451 00021954 5d effffffc62 tstl _force_loop
468: 452 0002195A 31 02 jeql L277
469: 453 0002195C # asm("brb _logf_3_lp1");; /* loop on the error */
470: 454 0002195C 11 d7 brb _logf_3_lp1
471: 455 0002195E L277:
472: 456 0002195E # /*
473: 457 0002195E # * end error loop
474: 458 0002195E # */
475: 459 0002195E # reg_no = 0;
476: 460 0002195E 4d effffffc58 clrl _reg_no
477: 461 00021964 # regs_ok = TRUE;
478: 462 00021964 0d 01 effffffc51 movl $1,_regs_ok
479: 463 0002196B # while( (reg_no < 13) && (regs_ok) ) /* check 1st 12 regs */
480: 464 0002196B L278:
481: 465 0002196B 1d effffffc4b 0d cmpl _reg_no,$13
482: 466 00021972 81 35 jgeq L279
483: 467 00021974 5d effffffc42 tstl _regs_ok
484: 468 0002197A 31 2d jeql L279
485: 469 0002197C # if( store_regs[ reg_no ] == load_regs[ reg_no ] )
486: 470 0002197C 0d effffffc3a 50 movl _reg_no,r0
487: 471 00021983 0d effffffc33 51 movl _reg_no,r1
488: 472 0002198A 1d 40effffffc2b cmpl _store_regs[r0],_load_regs[r1]
489: 41effffffc25
490: 473 00021997 21 08 jneq L280
491: 474 00021999 # reg_no++;
492: 475 00021999 6d effffffc1d incl _reg_no
493: 476 0002199F # else
494: 477 0002199F 11 06 jbr L281
495: 478 000219A1 L280:
496: 479 000219A1 # regs_ok = FALSE;
497: 480 000219A1 4d effffffc15 clrl _regs_ok
498: 481 000219A7 L281:
499: 482 000219A7 11 c2 jbr L278
500: 483 000219A9 L279:
501: 484 000219A9 # if( !regs_ok ) {
502: 485 000219A9 5d effffffc0d tstl _regs_ok
503: 486 000219AF 31 03 13 00fc jneq L282
504: 487 000219B4 # errcnt++; /* bump the error count */
505: 488 000219B4 6d effffffc02 incl _errcnt
506: 489 000219BA # if ( prt_error ) {
507: 490 000219BA 5d effffffbfc tstl _prt_error
508: 491 000219C0 21 03 13 00eb jeql L283
509: 492 000219C5 # writes(" \n"); /* start a new print line */
510: 493 000219C5 .data 1
511: 494 00000b62 * L284:
512: 495 00000b62 * 200A00 .ascii " \12\0"
513: 496 00000b65 * .text
514: 497 000219C5 dd 8f00000b62 pushl $L284
515: 498 000219CB fe 08 effffffbea callf $8,_writes
516: 499 000219D2 # writes("cycle: ");
517: 500 000219D2 .data 1
518: 501 00000b65 * L285:
519: 502 00000b65 * 6379636C653A2000 .ascii "cycle: \0"
520: 503 00000b6d * .text
521: 504 000219D2 dd 8f00000b65 pushl $L285
522: 505 000219D8 fe 08 effffffbdd callf $8,_writes
523: 506 000219DF # writed( cycle );
524: 507 000219DF dd effffffbd7 pushl _cycle
525: 508 000219E5 fe 08 effffffbd0 callf $8,_writed
526: 509 000219EC # writes(" LOGF test ");
527: 510 000219EC .data 1
528: 511 00000b6d * L286:
529: 512 00000b6d * 2020204C4F474620746573742 .ascii " LOGF test \0"
530: 000
531: 513 00000b7b * .text
532: 514 000219EC dd 8f00000b6d pushl $L286
533: 515 000219F2 fe 08 effffffbc3 callf $8,_writes
534: 516 000219F9 # writed( test_no );
535: 517 000219F9 dd effffffbbd pushl _test_no
536: 518 000219FF fe 08 effffffbb6 callf $8,_writed
537: 519 00021A06 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n"); {
538: 520 00021A06 .data 1
539: 521 00000b7b * L287:
540: 522 00000b7b * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
541: D204120524547495354455220
542: 574153204D4F4449464945440
543: A00
544: 523 00000ba2 * .text
545: 524 00021A06 dd 8f00000b7b pushl $L287
546: 525 00021A0C fe 08 effffffba9 callf $8,_writes
547: 526 00021A13 # print_logf_data();
548: 527 00021A13 fe 04 ef0000051c callf $4,_print_logf_data
549: 528 00021A1A # writec('\n');
550: 529 00021A1A dd 0a pushl $10
551: 530 00021A1C fe 08 effffffb99 callf $8,_writec
552: 531 00021A23 # writes("register ");
553: 532 00021A23 .data 1
554: 533 00000ba2 * L288:
555: 534 00000ba2 * 72656769737465722000 .ascii "register \0"
556: 535 00000bac * .text
557: 536 00021A23 dd 8f00000ba2 pushl $L288
558: 537 00021A29 fe 08 effffffb8c callf $8,_writes
559: 538 00021A30 # writed( reg_no );
560: 539 00021A30 dd effffffb86 pushl _reg_no
561: 540 00021A36 fe 08 effffffb7f callf $8,_writed
562: 541 00021A3D # writes(" = ");
563: 542 00021A3D .data 1
564: 543 00000bac * L289:
565: 544 00000bac * 203D2000 .ascii " = \0"
566: 545 00000bb0 * .text
567: 546 00021A3D dd 8f00000bac pushl $L289
568: 547 00021A43 fe 08 effffffb72 callf $8,_writes
569: 548 00021A4A # write32h( load_regs[reg_no] );
570: 549 00021A4A 0d effffffb6c 50 movl _reg_no,r0
571: 550 00021A51 dd 40effffffb64 pushl _load_regs[r0]
572: 551 00021A58 fe 08 effffffb5d callf $8,_write32h
573: 552 00021A5F # writes(", should be = ");
574: 553 00021A5F .data 1
575: 554 00000bb0 * L290:
576: 555 00000bb0 * 2C202073686F756C642062652 .ascii ", should be = \0"
577: 03D2000
578: 556 00000bc0 * .text
579: 557 00021A5F dd 8f00000bb0 pushl $L290
580: 558 00021A65 fe 08 effffffb50 callf $8,_writes
581: 559 00021A6C # write32h( store_regs[reg_no] );
582: 560 00021A6C 0d effffffb4a 50 movl _reg_no,r0
583: 561 00021A73 dd 40effffffb42 pushl _store_regs[r0]
584: 562 00021A7A fe 08 effffffb3b callf $8,_write32h
585: 563 00021A81 # writec('\n');
586: 564 00021A81 dd 0a pushl $10
587: 565 00021A83 fe 08 effffffb32 callf $8,_writec
588: 566 00021A8A # }
589: 567 00021A8A # if ( halt_flg ) /* halt on error? */
590: 568 00021A8A 5d effffffb2c tstl _halt_flg
591: 569 00021A90 31 09 jeql L291
592: 570 00021A92 # logf_er_halt( BAD_REG_HLT );
593: 571 00021A92 dd 02 pushl $2
594: 572 00021A94 fe 08 ef000004d7 callf $8,_logf_er_halt
595: 573 00021A9B # if ( loop_on_err )
596: 574 00021A9B L291:
597: 575 00021A9B 5d effffffb1b tstl _loop_on_err
598: 576 00021AA1 31 0d jeql L292
599: 577 00021AA3 # {
600: 578 00021AA3 # force_loop = TRUE; /* get the force loop flag */
601: 579 00021AA3 0d 01 effffffb12 movl $1,_force_loop
602: 580 00021AAA # asm("jmp _logf_3_lp1"); /* and loop */
603: 581 00021AAA 71 effffffe85 jmp _logf_3_lp1
604: 582 00021AB0 # }
605: 583 00021AB0 # } /* end of compare error */
606: 584 00021AB0 L292:
607: 585 00021AB0 # } /* end of while loop */
608: 586 00021AB0 L283:
609: 587 00021AB0 # } while( index++ < max_logf_1_index );
610: 588 00021AB0 L282:
611: 589 00021AB0 L275:
612: 590 00021AB0 0d effffffb06 50 movl _index,r0
613: 591 00021AB7 6d effffffaff incl _index
614: 592 00021ABD 1d 50 effffffaf8 cmpl r0,_max_logf_1_index
615: 593 00021AC4 81 03 13 fe40 jlss L276
616: 594 00021AC9 L274:
617: 595 00021AC9 # } /* end of subtest 3 */
618: 596 00021AC9 40 ret#2
619: 597 00021ACA .set L269,0x0
620: 598 00021ACA L271:
621: 599 00021ACA 13 fe1c jbr L272
622: 600 00021ACD .data
623: 601 00000a60 * .text
624: 602 00021ACD 00 .align 1
625: 603 00021ACE .globl _logf_4
626: 604 00021ACE _logf_4:
627: 605 00021ACE 0000 .word L293
628: 606 00021AD0 #
629: 607 00021AD0 #
630: 608 00021AD0 #
631: 609 00021AD0 # /************************************************************************
632: 610 00021AD0 # *
633: 611 00021AD0 # * SUBTEST 4 - Check for PSL corruption
634: 612 00021AD0 # *
635: 613 00021AD0 # ************************************************************************/
636: 614 00021AD0 # logf_4()
637: 615 00021AD0 # {
638: 616 00021AD0 13 01a8 jbr L295
639: 617 00021AD3 L296:
640: 618 00021AD3 # force_loop = FALSE; /* clear force_loop flg */
641: 619 00021AD3 4d effffffae3 clrl _force_loop
642: 620 00021AD9 # subtest = 4;
643: 621 00021AD9 0d 04 effffffadc movl $4,_subtest
644: 622 00021AE0 # fill_reg_buf( load_regs ); /* get patterns for regs */
645: 623 00021AE0 dd 8f00000000 pushl $_load_regs
646: 624 00021AE6 fe 08 effffffacf callf $8,_fill_reg_buf
647: 625 00021AED # for( index = 0; index < 3; index++ ) {
648: 626 00021AED 4d effffffac9 clrl _index
649: 627 00021AF3 L299:
650: 628 00021AF3 1d effffffac3 03 cmpl _index,$3
651: 629 00021AFA 91 03 13 017b jgeq L298
652: 630 00021AFF # sgl_ld_acc = logf_1_data[index].ld; /* get operand 1 */
653: 631 00021AFF 0d effffffab7 50 movl _index,r0
654: 632 00021B06 48 03 50 50 shll $3,r0,r0
655: 633 00021B0A 0d e000000000 effffffaa7 movl _logf_1_data(r0),_sgl_ld_acc
656: 634 00021B15 # sgl_expected = logf_1_data[index].exp; /* get expected */
657: 635 00021B15 0d effffffaa1 50 movl _index,r0
658: 636 00021B1C 48 03 50 50 shll $3,r0,r0
659: 637 00021B20 0d e000000004 effffffa91 movl _logf_1_data+4(r0),_sgl_expected
660: 638 00021B2B # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
661: 639 00021B2B 0d effffffa8b 50 movl _status_index,r0
662: 640 00021B32 0d 40effffffa83 movl _status_array[r0],_sgl_dummy1
663: effffffa7e
664: 641 00021B3E # /*
665: 642 00021B3E # * If LOOP ON ERROR is set, this is the loop for this subtest.
666: 643 00021B3E # * The force loop flag is set after the first error.
667: 644 00021B3E # */
668: 645 00021B3E # asm("_logf_4_lp1:");
669: 646 00021B3E _logf_4_lp1:
670: 647 00021B3E # asm("ldf _sgl_ld_acc"); /* LOAD the accumulator */
671: 648 00021B3E 06 effffffa78 ldf _sgl_ld_acc
672: 649 00021B44 # asm("nop");
673: 650 00021B44 10 nop
674: 651 00021B45 # asm("tstl _sgl_dummy1"); /* set the PSL status */
675: 652 00021B45 5d effffffa71 tstl _sgl_dummy1
676: 653 00021B4B # asm("movpsl _init_psl"); /* save the initial PSL */
677: 654 00021B4B cd effffffa6b movpsl _init_psl
678: 655 00021B51 # asm("logf"); /* do the log */
679: 656 00021B51 35 logf
680: 657 00021B52 # asm("nop");
681: 658 00021B52 10 nop
682: 659 00021B53 # asm("movpsl _psl_val"); /* save the final PSL */
683: 660 00021B53 cd effffffa63 movpsl _psl_val
684: 661 00021B59 # asm("stf _sgl_st_acc"); /* save the accumulator */
685: 662 00021B59 26 effffffa5d stf _sgl_st_acc
686: 663 00021B5F # if( force_loop )
687: 664 00021B5F 5d effffffa57 tstl _force_loop
688: 665 00021B65 31 02 jeql L300
689: 666 00021B67 # asm("brb _logf_4_lp1");; /* loop on the error */
690: 667 00021B67 11 d5 brb _logf_4_lp1
691: 668 00021B69 L300:
692: 669 00021B69 # /*
693: 670 00021B69 # * Now compare the final PSL to the initial PSL -they should be the same
694: 671 00021B69 # */
695: 672 00021B69 # exp_psl = init_psl;
696: 673 00021B69 0d effffffa4d effffffa48 movl _init_psl,_exp_psl
697: 674 00021B74 # if( psl_val != exp_psl ) {
698: 675 00021B74 1d effffffa42 effffffa3d cmpl _psl_val,_exp_psl
699: 676 00021B7F 21 03 13 00ed jeql L301
700: 677 00021B84 # errcnt++; /* bump the error count */
701: 678 00021B84 6d effffffa32 incl _errcnt
702: 679 00021B8A # if( prt_error ) {
703: 680 00021B8A 5d effffffa2c tstl _prt_error
704: 681 00021B90 21 03 13 00b9 jeql L302
705: 682 00021B95 # writes(" \n"); /* start a new print line */
706: 683 00021B95 .data 1
707: 684 00000bc0 * L303:
708: 685 00000bc0 * 200A00 .ascii " \12\0"
709: 686 00000bc3 * .text
710: 687 00021B95 dd 8f00000bc0 pushl $L303
711: 688 00021B9B fe 08 effffffa1a callf $8,_writes
712: 689 00021BA2 # writes("cycle: ");
713: 690 00021BA2 .data 1
714: 691 00000bc3 * L304:
715: 692 00000bc3 * 6379636C653A2000 .ascii "cycle: \0"
716: 693 00000bcb * .text
717: 694 00021BA2 dd 8f00000bc3 pushl $L304
718: 695 00021BA8 fe 08 effffffa0d callf $8,_writes
719: 696 00021BAF # writed( cycle );
720: 697 00021BAF dd effffffa07 pushl _cycle
721: 698 00021BB5 fe 08 effffffa00 callf $8,_writed
722: 699 00021BBC # writes(" LOGF test ");
723: 700 00021BBC .data 1
724: 701 00000bcb * L305:
725: 702 00000bcb * 2020204C4F474620746573742 .ascii " LOGF test \0"
726: 000
727: 703 00000bd9 * .text
728: 704 00021BBC dd 8f00000bcb pushl $L305
729: 705 00021BC2 fe 08 effffff9f3 callf $8,_writes
730: 706 00021BC9 # writed( test_no );
731: 707 00021BC9 dd effffff9ed pushl _test_no
732: 708 00021BCF fe 08 effffff9e6 callf $8,_writed
733: 709 00021BD6 # writes(", subtest 4 - INCORRECT FINAL PSL\n");
734: 710 00021BD6 .data 1
735: 711 00000bd9 * L306:
736: 712 00000bd9 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
737: D20494E434F52524543542046
738: 494E414C2050534C0A00
739: 713 00000bfc * .text
740: 714 00021BD6 dd 8f00000bd9 pushl $L306
741: 715 00021BDC fe 08 effffff9d9 callf $8,_writes
742: 716 00021BE3 # print_logf_data(); /* print the operands */
743: 717 00021BE3 fe 04 ef0000034c callf $4,_print_logf_data
744: 718 00021BEA # writec('\n');
745: 719 00021BEA dd 0a pushl $10
746: 720 00021BEC fe 08 effffff9c9 callf $8,_writec
747: 721 00021BF3 # writes("initial PSL = ");
748: 722 00021BF3 .data 1
749: 723 00000bfc * L307:
750: 724 00000bfc * 696E697469616C2050534C203 .ascii "initial PSL = \0"
751: D2000
752: 725 00000c0b * .text
753: 726 00021BF3 dd 8f00000bfc pushl $L307
754: 727 00021BF9 fe 08 effffff9bc callf $8,_writes
755: 728 00021C00 # write32h( init_psl );
756: 729 00021C00 dd effffff9b6 pushl _init_psl
757: 730 00021C06 fe 08 effffff9af callf $8,_write32h
758: 731 00021C0D # writes(", final PSL = ");
759: 732 00021C0D .data 1
760: 733 00000c0b * L308:
761: 734 00000c0b * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
762: 03D2000
763: 735 00000c1b * .text
764: 736 00021C0D dd 8f00000c0b pushl $L308
765: 737 00021C13 fe 08 effffff9a2 callf $8,_writes
766: 738 00021C1A # write32h( psl_val );
767: 739 00021C1A dd effffff99c pushl _psl_val
768: 740 00021C20 fe 08 effffff995 callf $8,_write32h
769: 741 00021C27 # writes(", expected PSL = ");
770: 742 00021C27 .data 1
771: 743 00000c1b * L309:
772: 744 00000c1b * 2C20206578706563746564205 .ascii ", expected PSL = \0"
773: 0534C203D2000
774: 745 00000c2e * .text
775: 746 00021C27 dd 8f00000c1b pushl $L309
776: 747 00021C2D fe 08 effffff988 callf $8,_writes
777: 748 00021C34 # write32h( exp_psl );
778: 749 00021C34 dd effffff982 pushl _exp_psl
779: 750 00021C3A fe 08 effffff97b callf $8,_write32h
780: 751 00021C41 # writes("\n");
781: 752 00021C41 .data 1
782: 753 00000c2e * L310:
783: 754 00000c2e * 0A00 .ascii "\12\0"
784: 755 00000c30 * .text
785: 756 00021C41 dd 8f00000c2e pushl $L310
786: 757 00021C47 fe 08 effffff96e callf $8,_writes
787: 758 00021C4E # }
788: 759 00021C4E # if( halt_flg )
789: 760 00021C4E L302:
790: 761 00021C4E 5d effffff968 tstl _halt_flg
791: 762 00021C54 31 09 jeql L311
792: 763 00021C56 # logf_er_halt( BAD_PSL_HLT ); /* halt on the error */
793: 764 00021C56 dd 03 pushl $3
794: 765 00021C58 fe 08 ef00000313 callf $8,_logf_er_halt
795: 766 00021C5F # if( loop_on_err ) {
796: 767 00021C5F L311:
797: 768 00021C5F 5d effffff957 tstl _loop_on_err
798: 769 00021C65 31 0a jeql L312
799: 770 00021C67 # force_loop = TRUE; /* set the force loop flag */
800: 771 00021C67 0d 01 effffff94e movl $1,_force_loop
801: 772 00021C6E # asm("brw _logf_4_lp1");; /* and loop on the error */
802: 773 00021C6E 13 fecd brw _logf_4_lp1
803: 774 00021C71 # } /* end of loop on error */
804: 775 00021C71 # } /* end of PSL corruption error */
805: 776 00021C71 L312:
806: 777 00021C71 # } /* end of WHILE loop */
807: 778 00021C71 L301:
808: 779 00021C71 L297:
809: 780 00021C71 6d effffff945 incl _index
810: 781 00021C77 13 fe79 jbr L299
811: 782 00021C7A L298:
812: 783 00021C7A # } /* end of subtest 4 */
813: 784 00021C7A 40 ret#2
814: 785 00021C7B .set L293,0x0
815: 786 00021C7B L295:
816: 787 00021C7B 13 fe55 jbr L296
817: 788 00021C7E .data
818: 789 00000a60 * .text
819: 790 00021C7E .align 1
820: 791 00021C7E .globl _logf_5
821: 792 00021C7E _logf_5:
822: 793 00021C7E 0000 .word L313
823: 794 00021C80 #
824: 795 00021C80 #
825: 796 00021C80 #
826: 797 00021C80 # /************************************************************************
827: 798 00021C80 # *
828: 799 00021C80 # * SUBTEST 5 - pipelined entry test
829: 800 00021C80 # *
830: 801 00021C80 # ************************************************************************/
831: 802 00021C80 # logf_5()
832: 803 00021C80 # {
833: 804 00021C80 13 0154 jbr L315
834: 805 00021C83 L316:
835: 806 00021C83 # force_loop = FALSE;
836: 807 00021C83 4d effffff933 clrl _force_loop
837: 808 00021C89 # subtest = 8;
838: 809 00021C89 0d 08 effffff92c movl $8,_subtest
839: 810 00021C90 # for( index = 0; index < max_logf_1_index; index++ ) {
840: 811 00021C90 4d effffff926 clrl _index
841: 812 00021C96 L319:
842: 813 00021C96 1d effffff920 effffff91b cmpl _index,_max_logf_1_index
843: 814 00021CA1 91 03 13 0130 jgeq L318
844: 815 00021CA6 # sgl_ld_acc = logf_1_data[index].ld; /* get operand 1 */
845: 816 00021CA6 0d effffff910 50 movl _index,r0
846: 817 00021CAD 48 03 50 50 shll $3,r0,r0
847: 818 00021CB1 0d e000000000 effffff900 movl _logf_1_data(r0),_sgl_ld_acc
848: 819 00021CBC # sgl_expected = logf_1_data[index].exp; /* get expected result */
849: 820 00021CBC 0d effffff8fa 50 movl _index,r0
850: 821 00021CC3 48 03 50 50 shll $3,r0,r0
851: 822 00021CC7 0d e000000004 effffff8ea movl _logf_1_data+4(r0),_sgl_expected
852: 823 00021CD2 # /*
853: 824 00021CD2 # * If LOOP ON ERROR is set, this is the loop for this subtest.
854: 825 00021CD2 # * The force loop flag is set after the first error.
855: 826 00021CD2 # */
856: 827 00021CD2 # asm("_logf_5_lp1:");
857: 828 00021CD2 _logf_5_lp1:
858: 829 00021CD2 # asm("movl $0,r0"); /* clear r0 */
859: 830 00021CD2 0d 00 50 movl $0,r0
860: 831 00021CD5 # asm("ldf r0"); /* load the Acc. with 0.0 */
861: 832 00021CD5 06 50 ldf r0
862: 833 00021CD7 # asm("addf _sgl_ld_acc"); /* add the 1st operand */
863: 834 00021CD7 c6 effffff8df addf _sgl_ld_acc
864: 835 00021CDD # asm("logf"); /* get the log */
865: 836 00021CDD 35 logf
866: 837 00021CDE # asm("stf _sgl_st_acc"); /* store the result */
867: 838 00021CDE 26 effffff8d8 stf _sgl_st_acc
868: 839 00021CE4 # if( force_loop )
869: 840 00021CE4 5d effffff8d2 tstl _force_loop
870: 841 00021CEA 31 02 jeql L320
871: 842 00021CEC # asm("brb _logf_5_lp1");; /* loop on the error */
872: 843 00021CEC 11 e4 brb _logf_5_lp1
873: 844 00021CEE L320:
874: 845 00021CEE # /*
875: 846 00021CEE # * end error loop - test the results
876: 847 00021CEE # */
877: 848 00021CEE # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
878: 849 00021CEE 1d effffff8c8 effffff8c3 cmpl _sgl_st_acc,_sgl_expected
879: 850 00021CF9 21 03 13 00cf jeql L321
880: 851 00021CFE # errcnt++; /* bump the error count */
881: 852 00021CFE 6d effffff8b8 incl _errcnt
882: 853 00021D04 # if( prt_error ) {
883: 854 00021D04 5d effffff8b2 tstl _prt_error
884: 855 00021D0A 21 03 13 009b jeql L322
885: 856 00021D0F # writes(" \n"); /* start a new print line */
886: 857 00021D0F .data 1
887: 858 00000c30 * L323:
888: 859 00000c30 * 200A00 .ascii " \12\0"
889: 860 00000c33 * .text
890: 861 00021D0F dd 8f00000c30 pushl $L323
891: 862 00021D15 fe 08 effffff8a0 callf $8,_writes
892: 863 00021D1C # writes("cycle: ");
893: 864 00021D1C .data 1
894: 865 00000c33 * L324:
895: 866 00000c33 * 6379636C653A2000 .ascii "cycle: \0"
896: 867 00000c3b * .text
897: 868 00021D1C dd 8f00000c33 pushl $L324
898: 869 00021D22 fe 08 effffff893 callf $8,_writes
899: 870 00021D29 # writed( cycle );
900: 871 00021D29 dd effffff88d pushl _cycle
901: 872 00021D2F fe 08 effffff886 callf $8,_writed
902: 873 00021D36 # writes(" LOGF test ");
903: 874 00021D36 .data 1
904: 875 00000c3b * L325:
905: 876 00000c3b * 2020204C4F474620746573742 .ascii " LOGF test \0"
906: 000
907: 877 00000c49 * .text
908: 878 00021D36 dd 8f00000c3b pushl $L325
909: 879 00021D3C fe 08 effffff879 callf $8,_writes
910: 880 00021D43 # writed( test_no );
911: 881 00021D43 dd effffff873 pushl _test_no
912: 882 00021D49 fe 08 effffff86c callf $8,_writed
913: 883 00021D50 # writes(", subtest 5 (Piped Entry) - BAD FINAL ACC\n");
914: 884 00021D50 .data 1
915: 885 00000c49 * L326:
916: 886 00000c49 * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Entry) - BAD FINAL ACC\12\0"
917: 8506970656420456E74727929
918: 202D204241442046494E414C2
919: 04143430A00
920: 887 00000c74 * .text
921: 888 00021D50 dd 8f00000c49 pushl $L326
922: 889 00021D56 fe 08 effffff85f callf $8,_writes
923: 890 00021D5D # print_logf_data();
924: 891 00021D5D fe 04 ef000001d2 callf $4,_print_logf_data
925: 892 00021D64 # writes(", data index = ");
926: 893 00021D64 .data 1
927: 894 00000c74 * L327:
928: 895 00000c74 * 2C20206461746120696E64657 .ascii ", data index = \0"
929: 8203D2000
930: 896 00000c85 * .text
931: 897 00021D64 dd 8f00000c74 pushl $L327
932: 898 00021D6A fe 08 effffff84b callf $8,_writes
933: 899 00021D71 # writed( index );
934: 900 00021D71 dd effffff845 pushl _index
935: 901 00021D77 fe 08 effffff83e callf $8,_writed
936: 902 00021D7E # writec('\n');
937: 903 00021D7E dd 0a pushl $10
938: 904 00021D80 fe 08 effffff835 callf $8,_writec
939: 905 00021D87 # writes(" expected = ");
940: 906 00021D87 .data 1
941: 907 00000c85 * L328:
942: 908 00000c85 * 2020202020202020202020202 .ascii " expected = \0"
943: 0202020202020202020202020
944: 206578706563746564203D200
945: 0
946: 909 00000cab * .text
947: 910 00021D87 dd 8f00000c85 pushl $L328
948: 911 00021D8D fe 08 effffff828 callf $8,_writes
949: 912 00021D94 # write32h( sgl_expected );
950: 913 00021D94 dd effffff822 pushl _sgl_expected
951: 914 00021D9A fe 08 effffff81b callf $8,_write32h
952: 915 00021DA1 # writec('\n');
953: 916 00021DA1 dd 0a pushl $10
954: 917 00021DA3 fe 08 effffff812 callf $8,_writec
955: 918 00021DAA # }
956: 919 00021DAA # if( halt_flg )
957: 920 00021DAA L322:
958: 921 00021DAA 5d effffff80c tstl _halt_flg
959: 922 00021DB0 31 09 jeql L329
960: 923 00021DB2 # logf_er_halt( BAD_ACC_HLT ); /* halt on the error */
961: 924 00021DB2 dd 01 pushl $1
962: 925 00021DB4 fe 08 ef000001b7 callf $8,_logf_er_halt
963: 926 00021DBB # if( loop_on_err ) {
964: 927 00021DBB L329:
965: 928 00021DBB 5d effffff7fb tstl _loop_on_err
966: 929 00021DC1 31 0a jeql L330
967: 930 00021DC3 # force_loop = TRUE; /* set the force loop flag */
968: 931 00021DC3 0d 01 effffff7f2 movl $1,_force_loop
969: 932 00021DCA # asm("brw _logf_5_lp1");; /* and loop on the error */
970: 933 00021DCA 13 ff05 brw _logf_5_lp1
971: 934 00021DCD # } /* end of loop on error */
972: 935 00021DCD # } /* end of compare error */
973: 936 00021DCD L330:
974: 937 00021DCD # } /* end of WHILE loop */
975: 938 00021DCD L321:
976: 939 00021DCD L317:
977: 940 00021DCD 6d effffff7e9 incl _index
978: 941 00021DD3 13 fec0 jbr L319
979: 942 00021DD6 L318:
980: 943 00021DD6 # } /* end of subtest 5 */
981: 944 00021DD6 40 ret#2
982: 945 00021DD7 .set L313,0x0
983: 946 00021DD7 L315:
984: 947 00021DD7 13 fea9 jbr L316
985: 948 00021DDA .data
986: 949 00000a60 * .text
987: 950 00021DDA .align 1
988: 951 00021DDA .globl _logf_6
989: 952 00021DDA _logf_6:
990: 953 00021DDA 0000 .word L331
991: 954 00021DDC #
992: 955 00021DDC #
993: 956 00021DDC #
994: 957 00021DDC # /************************************************************************
995: 958 00021DDC # *
996: 959 00021DDC # * SUBTEST 6 - pipelined exit test
997: 960 00021DDC # *
998: 961 00021DDC # ************************************************************************/
999: 962 00021DDC # logf_6()
1000: 963 00021DDC # {
1001: 964 00021DDC 13 0154 jbr L333
1002: 965 00021DDF L334:
1003: 966 00021DDF # force_loop = FALSE;
1004: 967 00021DDF 4d effffff7d7 clrl _force_loop
1005: 968 00021DE5 # subtest = 8;
1006: 969 00021DE5 0d 08 effffff7d0 movl $8,_subtest
1007: 970 00021DEC # for( index = 0; index < max_logf_1_index; index++ ) {
1008: 971 00021DEC 4d effffff7ca clrl _index
1009: 972 00021DF2 L337:
1010: 973 00021DF2 1d effffff7c4 effffff7bf cmpl _index,_max_logf_1_index
1011: 974 00021DFD 91 03 13 0130 jgeq L336
1012: 975 00021E02 # sgl_ld_acc = logf_1_data[index].ld; /* get operand 1 */
1013: 976 00021E02 0d effffff7b4 50 movl _index,r0
1014: 977 00021E09 48 03 50 50 shll $3,r0,r0
1015: 978 00021E0D 0d e000000000 effffff7a4 movl _logf_1_data(r0),_sgl_ld_acc
1016: 979 00021E18 # sgl_expected = logf_1_data[index].exp; /* get expected result */
1017: 980 00021E18 0d effffff79e 50 movl _index,r0
1018: 981 00021E1F 48 03 50 50 shll $3,r0,r0
1019: 982 00021E23 0d e000000004 effffff78e movl _logf_1_data+4(r0),_sgl_expected
1020: 983 00021E2E # /*
1021: 984 00021E2E # * If LOOP ON ERROR is set, this is the loop for this subtest.
1022: 985 00021E2E # * The force loop flag is set after the first error.
1023: 986 00021E2E # */
1024: 987 00021E2E # asm("_logf_6_lp1:");
1025: 988 00021E2E _logf_6_lp1:
1026: 989 00021E2E # asm("movl $0,r0"); /* clear r0 */
1027: 990 00021E2E 0d 00 50 movl $0,r0
1028: 991 00021E31 # asm("ldf _sgl_ld_acc"); /* load the Acc. */
1029: 992 00021E31 06 effffff785 ldf _sgl_ld_acc
1030: 993 00021E37 # asm("logf"); /* get the log */
1031: 994 00021E37 35 logf
1032: 995 00021E38 # asm("addf r0"); /* add a zero to the acc */
1033: 996 00021E38 c6 50 addf r0
1034: 997 00021E3A # asm("stf _sgl_st_acc"); /* store the result */
1035: 998 00021E3A 26 effffff77c stf _sgl_st_acc
1036: 999 00021E40 # if( force_loop )
1037: 1000 00021E40 5d effffff776 tstl _force_loop
1038: 1001 00021E46 31 02 jeql L338
1039: 1002 00021E48 # asm("brb _logf_6_lp1");; /* loop on the error */
1040: 1003 00021E48 11 e4 brb _logf_6_lp1
1041: 1004 00021E4A L338:
1042: 1005 00021E4A # /*
1043: 1006 00021E4A # * end error loop - test the results
1044: 1007 00021E4A # */
1045: 1008 00021E4A # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1046: 1009 00021E4A 1d effffff76c effffff767 cmpl _sgl_st_acc,_sgl_expected
1047: 1010 00021E55 21 03 13 00cf jeql L339
1048: 1011 00021E5A # errcnt++; /* bump the error count */
1049: 1012 00021E5A 6d effffff75c incl _errcnt
1050: 1013 00021E60 # if( prt_error ) {
1051: 1014 00021E60 5d effffff756 tstl _prt_error
1052: 1015 00021E66 21 03 13 009b jeql L340
1053: 1016 00021E6B # writes(" \n"); /* start a new print line */
1054: 1017 00021E6B .data 1
1055: 1018 00000cab * L341:
1056: 1019 00000cab * 200A00 .ascii " \12\0"
1057: 1020 00000cae * .text
1058: 1021 00021E6B dd 8f00000cab pushl $L341
1059: 1022 00021E71 fe 08 effffff744 callf $8,_writes
1060: 1023 00021E78 # writes("cycle: ");
1061: 1024 00021E78 .data 1
1062: 1025 00000cae * L342:
1063: 1026 00000cae * 6379636C653A2000 .ascii "cycle: \0"
1064: 1027 00000cb6 * .text
1065: 1028 00021E78 dd 8f00000cae pushl $L342
1066: 1029 00021E7E fe 08 effffff737 callf $8,_writes
1067: 1030 00021E85 # writed( cycle );
1068: 1031 00021E85 dd effffff731 pushl _cycle
1069: 1032 00021E8B fe 08 effffff72a callf $8,_writed
1070: 1033 00021E92 # writes(" LOGF test ");
1071: 1034 00021E92 .data 1
1072: 1035 00000cb6 * L343:
1073: 1036 00000cb6 * 2020204C4F474620746573742 .ascii " LOGF test \0"
1074: 000
1075: 1037 00000cc4 * .text
1076: 1038 00021E92 dd 8f00000cb6 pushl $L343
1077: 1039 00021E98 fe 08 effffff71d callf $8,_writes
1078: 1040 00021E9F # writed( test_no );
1079: 1041 00021E9F dd effffff717 pushl _test_no
1080: 1042 00021EA5 fe 08 effffff710 callf $8,_writed
1081: 1043 00021EAC # writes(", subtest 6 (Piped Exit) - BAD FINAL ACC\n");
1082: 1044 00021EAC .data 1
1083: 1045 00000cc4 * L344:
1084: 1046 00000cc4 * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Exit) - BAD FINAL ACC\12\0"
1085: 8506970656420457869742920
1086: 2D204241442046494E414C204
1087: 143430A00
1088: 1047 00000cee * .text
1089: 1048 00021EAC dd 8f00000cc4 pushl $L344
1090: 1049 00021EB2 fe 08 effffff703 callf $8,_writes
1091: 1050 00021EB9 # print_logf_data();
1092: 1051 00021EB9 fe 04 ef00000076 callf $4,_print_logf_data
1093: 1052 00021EC0 # writes(", data index = ");
1094: 1053 00021EC0 .data 1
1095: 1054 00000cee * L345:
1096: 1055 00000cee * 2C20206461746120696E64657 .ascii ", data index = \0"
1097: 8203D2000
1098: 1056 00000cff * .text
1099: 1057 00021EC0 dd 8f00000cee pushl $L345
1100: 1058 00021EC6 fe 08 effffff6ef callf $8,_writes
1101: 1059 00021ECD # writed( index );
1102: 1060 00021ECD dd effffff6e9 pushl _index
1103: 1061 00021ED3 fe 08 effffff6e2 callf $8,_writed
1104: 1062 00021EDA # writec('\n');
1105: 1063 00021EDA dd 0a pushl $10
1106: 1064 00021EDC fe 08 effffff6d9 callf $8,_writec
1107: 1065 00021EE3 # writes(" expected = ");
1108: 1066 00021EE3 .data 1
1109: 1067 00000cff * L346:
1110: 1068 00000cff * 2020202020202020202020202 .ascii " expected = \0"
1111: 0202020202020202020202020
1112: 206578706563746564203D200
1113: 0
1114: 1069 00000d25 * .text
1115: 1070 00021EE3 dd 8f00000cff pushl $L346
1116: 1071 00021EE9 fe 08 effffff6cc callf $8,_writes
1117: 1072 00021EF0 # write32h( sgl_expected );
1118: 1073 00021EF0 dd effffff6c6 pushl _sgl_expected
1119: 1074 00021EF6 fe 08 effffff6bf callf $8,_write32h
1120: 1075 00021EFD # writec('\n');
1121: 1076 00021EFD dd 0a pushl $10
1122: 1077 00021EFF fe 08 effffff6b6 callf $8,_writec
1123: 1078 00021F06 # }
1124: 1079 00021F06 # if( halt_flg )
1125: 1080 00021F06 L340:
1126: 1081 00021F06 5d effffff6b0 tstl _halt_flg
1127: 1082 00021F0C 31 09 jeql L347
1128: 1083 00021F0E # logf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1129: 1084 00021F0E dd 01 pushl $1
1130: 1085 00021F10 fe 08 ef0000005b callf $8,_logf_er_halt
1131: 1086 00021F17 # if( loop_on_err ) {
1132: 1087 00021F17 L347:
1133: 1088 00021F17 5d effffff69f tstl _loop_on_err
1134: 1089 00021F1D 31 0a jeql L348
1135: 1090 00021F1F # force_loop = TRUE; /* set the force loop flag */
1136: 1091 00021F1F 0d 01 effffff696 movl $1,_force_loop
1137: 1092 00021F26 # asm("brw _logf_6_lp1");; /* and loop on the error */
1138: 1093 00021F26 13 ff05 brw _logf_6_lp1
1139: 1094 00021F29 # } /* end of loop on error */
1140: 1095 00021F29 # } /* end of compare error */
1141: 1096 00021F29 L348:
1142: 1097 00021F29 # } /* end of WHILE loop */
1143: 1098 00021F29 L339:
1144: 1099 00021F29 L335:
1145: 1100 00021F29 6d effffff68d incl _index
1146: 1101 00021F2F 13 fec0 jbr L337
1147: 1102 00021F32 L336:
1148: 1103 00021F32 # } /* end of subtest 6 */
1149: 1104 00021F32 40 ret#2
1150: 1105 00021F33 .set L331,0x0
1151: 1106 00021F33 L333:
1152: 1107 00021F33 13 fea9 jbr L334
1153: 1108 00021F36 .data
1154: 1109 00000a60 * .text
1155: 1110 00021F36 .align 1
1156: 1111 00021F36 .globl _print_logf_data
1157: 1112 00021F36 _print_logf_data:
1158: 1113 00021F36 0000 .word L349
1159: 1114 00021F38 #
1160: 1115 00021F38 #
1161: 1116 00021F38 # /**************************************************************************
1162: 1117 00021F38 # *
1163: 1118 00021F38 # * PRINT THE DATA AND STORE RESULTS
1164: 1119 00021F38 # *
1165: 1120 00021F38 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
1166: 1121 00021F38 # * Acc expected = xxxxxxxx
1167: 1122 00021F38 # **************************************************************************/
1168: 1123 00021F38 # print_logf_data()
1169: 1124 00021F38 # {
1170: 1125 00021F38 11 35 jbr L351
1171: 1126 00021F3A L352:
1172: 1127 00021F3A # writes("initial Acc = ");
1173: 1128 00021F3A .data 1
1174: 1129 00000d25 * L353:
1175: 1130 00000d25 * 696E697469616C20416363203 .ascii "initial Acc = \0"
1176: D2000
1177: 1131 00000d34 * .text
1178: 1132 00021F3A dd 8f00000d25 pushl $L353
1179: 1133 00021F40 fe 08 effffff675 callf $8,_writes
1180: 1134 00021F47 # write32h( sgl_ld_acc );
1181: 1135 00021F47 dd effffff66f pushl _sgl_ld_acc
1182: 1136 00021F4D fe 08 effffff668 callf $8,_write32h
1183: 1137 00021F54 # writes(", final Acc = ");
1184: 1138 00021F54 .data 1
1185: 1139 00000d34 * L354:
1186: 1140 00000d34 * 2C202066696E616C204163632 .ascii ", final Acc = \0"
1187: 03D2000
1188: 1141 00000d44 * .text
1189: 1142 00021F54 dd 8f00000d34 pushl $L354
1190: 1143 00021F5A fe 08 effffff65b callf $8,_writes
1191: 1144 00021F61 # write32h( sgl_st_acc );
1192: 1145 00021F61 dd effffff655 pushl _sgl_st_acc
1193: 1146 00021F67 fe 08 effffff64e callf $8,_write32h
1194: 1147 00021F6E # }
1195: 1148 00021F6E 40 ret#2
1196: 1149 00021F6F .set L349,0x0
1197: 1150 00021F6F L351:
1198: 1151 00021F6F 11 c9 jbr L352
1199: 1152 00021F71 .data
1200: 1153 00000a60 * .text
1201: 1154 00021F71 00 .align 1
1202: 1155 00021F72 .globl _logf_er_halt
1203: 1156 00021F72 _logf_er_halt:
1204: 1157 00021F72 0000 .word L355
1205: 1158 00021F74 #
1206: 1159 00021F74 #
1207: 1160 00021F74 #
1208: 1161 00021F74 # /**************************************************************************
1209: 1162 00021F74 # *
1210: 1163 00021F74 # * HALT ON ERROR ROUTINE
1211: 1164 00021F74 # *
1212: 1165 00021F74 # **************************************************************************/
1213: 1166 00021F74 # logf_er_halt( halt_code )
1214: 1167 00021F74 # int halt_code;
1215: 1168 00021F74 # {
1216: 1169 00021F74 13 00a0 jbr L357
1217: 1170 00021F77 L358:
1218: 1171 00021F77 # sgl_dummy1 = halt_code; /* get the error type */
1219: 1172 00021F77 0d ad04 effffff63d movl 4(fp),_sgl_dummy1
1220: 1173 00021F7F # asm("movl _test_no,r0"); /* r0 = test number */
1221: 1174 00021F7F 0d effffff637 50 movl _test_no,r0
1222: 1175 00021F86 # asm("movl _subtest,r1"); /* r1 = subtest number */
1223: 1176 00021F86 0d effffff630 51 movl _subtest,r1
1224: 1177 00021F8D # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1225: 1178 00021F8D 0d effffff629 52 movl _sgl_dummy1,r2
1226: 1179 00021F94 # asm("movl _cycle,r3"); /* r3 = cycle count */
1227: 1180 00021F94 0d effffff622 53 movl _cycle,r3
1228: 1181 00021F9B # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1229: 1182 00021F9B 0d effffff61b 54 movl _sgl_ld_acc,r4
1230: 1183 00021FA2 # asm("movl _sgl_st_acc,r5"); /* r5 = data stored */
1231: 1184 00021FA2 0d effffff614 55 movl _sgl_st_acc,r5
1232: 1185 00021FA9 # asm("movl _sgl_expected,r6"); /* r6 = data expected */
1233: 1186 00021FA9 0d effffff60d 56 movl _sgl_expected,r6
1234: 1187 00021FB0 # asm("movl _index,r7"); /* r7 = data index */
1235: 1188 00021FB0 0d effffff606 57 movl _index,r7
1236: 1189 00021FB7 # if( halt_code == BAD_REG_HLT ) {
1237: 1190 00021FB7 1d ad04 02 cmpl 4(fp),$2
1238: 1191 00021FBB 21 3d jneq L359
1239: 1192 00021FBD # sgl_dummy1 = load_regs[index2];
1240: 1193 00021FBD 0d effffff5f9 50 movl _index2,r0
1241: 1194 00021FC4 0d 40effffff5f1 movl _load_regs[r0],_sgl_dummy1
1242: effffff5ec
1243: 1195 00021FD0 # sgl_dummy2 = store_regs[index2];
1244: 1196 00021FD0 0d effffff5e6 50 movl _index2,r0
1245: 1197 00021FD7 0d 40effffff5de movl _store_regs[r0],_sgl_dummy2
1246: effffff5d9
1247: 1198 00021FE3 # asm("movl _index2,r6"); /* r6 = bad register # */
1248: 1199 00021FE3 0d effffff5d3 56 movl _index2,r6
1249: 1200 00021FEA # asm("movl _sgl_dummy2,r7"); /* r7 = actual value */
1250: 1201 00021FEA 0d effffff5cc 57 movl _sgl_dummy2,r7
1251: 1202 00021FF1 # asm("movl _sgl_dummy1,r8"); /* r8 = expected value */
1252: 1203 00021FF1 0d effffff5c5 58 movl _sgl_dummy1,r8
1253: 1204 00021FF8 # } else
1254: 1205 00021FF8 11 1b jbr L360
1255: 1206 00021FFA L359:
1256: 1207 00021FFA # if( halt_code == BAD_PSL_HLT ) {
1257: 1208 00021FFA 1d ad04 03 cmpl 4(fp),$3
1258: 1209 00021FFE 21 15 jneq L361
1259: 1210 00022000 # asm("movl _init_psl,r6"); /* r6 = initial PSL */
1260: 1211 00022000 0d effffff5b6 56 movl _init_psl,r6
1261: 1212 00022007 # asm("movl _psl_val,r7"); /* r7 = final PSL */
1262: 1213 00022007 0d effffff5af 57 movl _psl_val,r7
1263: 1214 0002200E # asm("movl _exp_psl,r8"); /* r8 = expected PSL */
1264: 1215 0002200E 0d effffff5a8 58 movl _exp_psl,r8
1265: 1216 00022015 # };
1266: 1217 00022015 L361:
1267: 1218 00022015 L360:
1268: 1219 00022015 # asm("halt"); /* HALT ... */
1269: 1220 00022015 00 halt
1270: 1221 00022016 # }
1271: 1222 00022016 40 ret#2
1272: 1223 00022017 .set L355,0x0
1273: 1224 00022017 L357:
1274: 1225 00022017 13 ff5d jbr L358
1275: 1226 0002201A .data
1276: 1226 000435D6 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.