|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000be8 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _ldf
6: 6 00000000 _ldf:
7: 7 0000CA44 0000 .word L215
8: 8 0000CA46 # #include "fpp_defs.h"
9: 9 0000CA46 #
10: 10 0000CA46 #
11: 11 0000CA46 # /*****************************************************************************
12: 12 0000CA46 # *
13: 13 0000CA46 # * LDF_STF - SINGLE PRECISION FLOATING POINT LOAD_STORE TEST
14: 14 0000CA46 # *
15: 15 0000CA46 # *****************************************************************************/
16: 16 0000CA46 # ldf()
17: 17 0000CA46 # {
18: 18 0000CA46 11 56 jbr L217
19: 19 0000CA48 L218:
20: 20 0000CA48 # asm(".globl _ldf_t");
21: 21 0000CA48 .globl _ldf_t
22: 22 0000CA48 # asm("_ldf_t:"); /* entry address */
23: 23 0000CA48 _ldf_t:
24: 24 0000CA48 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st cycle */
25: 25 0000CA48 1d effffffff6 01 cmpl _cycle,$1
26: 26 0000CA4F 21 15 jneq L219
27: 27 0000CA51 5d efffffffed tstl _prt_hdrs
28: 28 0000CA57 31 0d jeql L219
29: 29 0000CA59 # writes(" LDF_STF");
30: 30 0000CA59 .data 1
31: 31 00000be8 * L221:
32: 32 00000be8 * 204C44465F53544600 .ascii " LDF_STF\0"
33: 33 00000bf1 * .text
34: 34 0000CA59 dd 8f00000be8 pushl $L221
35: 35 0000CA5F fe 08 efffffffde callf $8,_writes
36: 36 0000CA66 # ldf_1(); /* load through a register */
37: 37 0000CA66 L219:
38: 38 0000CA66 fe 04 ef00000033 callf $4,_ldf_1
39: 39 0000CA6D # ldf_2(); /* load through the cache */
40: 40 0000CA6D fe 04 ef0000014c callf $4,_ldf_2
41: 41 0000CA74 # ldf_3(); /* register stability ldf */
42: 42 0000CA74 fe 04 ef0000025f callf $4,_ldf_3
43: 43 0000CA7B # ldf_4(); /* register stability stf */
44: 44 0000CA7B fe 04 ef000003bc callf $4,_ldf_4
45: 45 0000CA82 # ldf_5(); /* PSL stability test -LDF */
46: 46 0000CA82 fe 04 ef00000519 callf $4,_ldf_5
47: 47 0000CA89 # ldf_6(); /* PSL stability test -STF */
48: 48 0000CA89 fe 04 ef00000664 callf $4,_ldf_6
49: 49 0000CA90 # ldf_7(); /* pipelined entry test */
50: 50 0000CA90 fe 04 ef000007fd callf $4,_ldf_7
51: 51 0000CA97 # asm("jmp *return"); /* return to the test monitor */
52: 52 0000CA97 71 ffffffffa7 jmp *return
53: 53 0000CA9D # }
54: 54 0000CA9D 40 ret#2
55: 55 0000CA9E .set L215,0x0
56: 56 0000CA9E L217:
57: 57 0000CA9E 11 a8 jbr L218
58: 58 0000CAA0 .data
59: 59 00000be8 * .text
60: 60 0000CAA0 .align 1
61: 61 0000CAA0 .globl _ldf_1
62: 62 0000CAA0 _ldf_1:
63: 63 0000CAA0 0000 .word L229
64: 64 0000CAA2 #
65: 65 0000CAA2 #
66: 66 0000CAA2 # /************************************************************************
67: 67 0000CAA2 # *
68: 68 0000CAA2 # * SUBTEST 1 - load through a register
69: 69 0000CAA2 # *
70: 70 0000CAA2 # ************************************************************************/
71: 71 0000CAA2 # ldf_1()
72: 72 0000CAA2 # {
73: 73 0000CAA2 13 0118 jbr L231
74: 74 0000CAA5 L232:
75: 75 0000CAA5 # force_loop = FALSE;
76: 76 0000CAA5 4d efffffff99 clrl _force_loop
77: 77 0000CAAB # subtest = 1;
78: 78 0000CAAB 0d 01 efffffff92 movl $1,_subtest
79: 79 0000CAB2 # for( index = 0; index < max_ldf_1_index; index++ ) {
80: 80 0000CAB2 4d efffffff8c clrl _index
81: 81 0000CAB8 L235:
82: 82 0000CAB8 1d efffffff86 efffffff81 cmpl _index,_max_ldf_1_index
83: 83 0000CAC3 91 03 13 00f4 jgeq L234
84: 84 0000CAC8 # sgl_ld_acc = ldf_1_data[index].ld; /* get value to load */
85: 85 0000CAC8 0d efffffff76 50 movl _index,r0
86: 86 0000CACF 48 03 50 50 shll $3,r0,r0
87: 87 0000CAD3 0d e000000000 efffffff66 movl _ldf_1_data(r0),_sgl_ld_acc
88: 88 0000CADE # sgl_expected = ldf_1_data[index].exp; /* get expected result */
89: 89 0000CADE 0d efffffff60 50 movl _index,r0
90: 90 0000CAE5 48 03 50 50 shll $3,r0,r0
91: 91 0000CAE9 0d e000000004 efffffff50 movl _ldf_1_data+4(r0),_sgl_expected
92: 92 0000CAF4 # /*
93: 93 0000CAF4 # * If LOOP ON ERROR is set, this is the loop for this subtest.
94: 94 0000CAF4 # * The force loop flag is set after the first error.
95: 95 0000CAF4 # */
96: 96 0000CAF4 # asm("_ldf_1_lp1:");
97: 97 0000CAF4 _ldf_1_lp1:
98: 98 0000CAF4 # asm("movl _sgl_ld_acc,r4"); /* get the value to load */
99: 99 0000CAF4 0d efffffff4a 54 movl _sgl_ld_acc,r4
100: 100 0000CAFB # asm("ldf r4"); /* load the value */
101: 101 0000CAFB 06 54 ldf r4
102: 102 0000CAFD # asm("nop");
103: 103 0000CAFD 10 nop
104: 104 0000CAFE # asm("stf r5"); /* store the result in R5 */
105: 105 0000CAFE 26 55 stf r5
106: 106 0000CB00 # if( force_loop )
107: 107 0000CB00 5d efffffff3e tstl _force_loop
108: 108 0000CB06 31 02 jeql L236
109: 109 0000CB08 # asm("brb _ldf_1_lp1");; /* loop on the error */
110: 110 0000CB08 11 ea brb _ldf_1_lp1
111: 111 0000CB0A L236:
112: 112 0000CB0A # /*
113: 113 0000CB0A # * end error loop - test the results
114: 114 0000CB0A # */
115: 115 0000CB0A # asm("movl r5,_sgl_st_acc"); /* move R5 data to cache */
116: 116 0000CB0A 0d 55 efffffff33 movl r5,_sgl_st_acc
117: 117 0000CB11 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
118: 118 0000CB11 1d efffffff2d efffffff28 cmpl _sgl_st_acc,_sgl_expected
119: 119 0000CB1C 21 03 13 0092 jeql L237
120: 120 0000CB21 # errcnt++; /* bump the error count */
121: 121 0000CB21 6d efffffff1d incl _errcnt
122: 122 0000CB27 # if( prt_error ) {
123: 123 0000CB27 5d efffffff17 tstl _prt_error
124: 124 0000CB2D 31 61 jeql L238
125: 125 0000CB2F # print_ldf_er_hdr();
126: 126 0000CB2F fe 04 ef00000998 callf $4,_print_ldf_er_hdr
127: 127 0000CB36 # writes(" (Reg. Data) - BAD FINAL ACC\n");
128: 128 0000CB36 .data 1
129: 129 00000bf1 * L240:
130: 130 00000bf1 * 20285265672E2044617461292 .ascii " (Reg. Data) - BAD FINAL ACC\12\0"
131: 02D204241442046494E414C20
132: 4143430A00
133: 131 00000c0f * .text
134: 132 0000CB36 dd 8f00000bf1 pushl $L240
135: 133 0000CB3C fe 08 efffffff01 callf $8,_writes
136: 134 0000CB43 # print_ldf_data();
137: 135 0000CB43 fe 04 ef000009f4 callf $4,_print_ldf_data
138: 136 0000CB4A # writes(", data index = ");
139: 137 0000CB4A .data 1
140: 138 00000c0f * L242:
141: 139 00000c0f * 2C20206461746120696E64657 .ascii ", data index = \0"
142: 8203D2000
143: 140 00000c20 * .text
144: 141 0000CB4A dd 8f00000c0f pushl $L242
145: 142 0000CB50 fe 08 effffffeed callf $8,_writes
146: 143 0000CB57 # writed( index );
147: 144 0000CB57 dd effffffee7 pushl _index
148: 145 0000CB5D fe 08 effffffee0 callf $8,_writed
149: 146 0000CB64 # writec('\n');
150: 147 0000CB64 dd 0a pushl $10
151: 148 0000CB66 fe 08 effffffed7 callf $8,_writec
152: 149 0000CB6D # writes(" Acc expected = ");
153: 150 0000CB6D .data 1
154: 151 00000c20 * L245:
155: 152 00000c20 * 2020202020202020202020202 .ascii " Acc expected = \0"
156: 0202020202020202020204163
157: 63206578706563746564203D2
158: 000
159: 153 00000c47 * .text
160: 154 0000CB6D dd 8f00000c20 pushl $L245
161: 155 0000CB73 fe 08 effffffeca callf $8,_writes
162: 156 0000CB7A # write32h( sgl_expected );
163: 157 0000CB7A dd effffffec4 pushl _sgl_expected
164: 158 0000CB80 fe 08 effffffebd callf $8,_write32h
165: 159 0000CB87 # writec('\n');
166: 160 0000CB87 dd 0a pushl $10
167: 161 0000CB89 fe 08 effffffeb4 callf $8,_writec
168: 162 0000CB90 # }
169: 163 0000CB90 # if( halt_flg )
170: 164 0000CB90 L238:
171: 165 0000CB90 5d effffffeae tstl _halt_flg
172: 166 0000CB96 31 09 jeql L247
173: 167 0000CB98 # ldf_er_halt( BAD_ACC_HLT ); /* halt on the error */
174: 168 0000CB98 dd 01 pushl $1
175: 169 0000CB9A fe 08 ef000009d9 callf $8,_ldf_er_halt
176: 170 0000CBA1 # if( loop_on_err ) {
177: 171 0000CBA1 L247:
178: 172 0000CBA1 5d effffffe9d tstl _loop_on_err
179: 173 0000CBA7 31 0a jeql L249
180: 174 0000CBA9 # force_loop = TRUE; /* set the force loop flag */
181: 175 0000CBA9 0d 01 effffffe94 movl $1,_force_loop
182: 176 0000CBB0 # asm("brw _ldf_1_lp1");; /* and loop on the error */
183: 177 0000CBB0 13 ff41 brw _ldf_1_lp1
184: 178 0000CBB3 # } /* end of loop on error */
185: 179 0000CBB3 # } /* end of compare error */
186: 180 0000CBB3 L249:
187: 181 0000CBB3 # } /* end of WHILE loop */
188: 182 0000CBB3 L237:
189: 183 0000CBB3 L233:
190: 184 0000CBB3 6d effffffe8b incl _index
191: 185 0000CBB9 13 fefc jbr L235
192: 186 0000CBBC L234:
193: 187 0000CBBC # } /* end of subtest 1 */
194: 188 0000CBBC 40 ret#2
195: 189 0000CBBD .set L229,0x0
196: 190 0000CBBD L231:
197: 191 0000CBBD 13 fee5 jbr L232
198: 192 0000CBC0 .data
199: 193 00000be8 * .text
200: 194 0000CBC0 .align 1
201: 195 0000CBC0 .globl _ldf_2
202: 196 0000CBC0 _ldf_2:
203: 197 0000CBC0 0000 .word L250
204: 198 0000CBC2 #
205: 199 0000CBC2 #
206: 200 0000CBC2 #
207: 201 0000CBC2 # /************************************************************************
208: 202 0000CBC2 # *
209: 203 0000CBC2 # * SUBTEST 2 - load through memory
210: 204 0000CBC2 # *
211: 205 0000CBC2 # ************************************************************************/
212: 206 0000CBC2 # ldf_2()
213: 207 0000CBC2 # {
214: 208 0000CBC2 13 0112 jbr L252
215: 209 0000CBC5 L253:
216: 210 0000CBC5 # force_loop = FALSE;
217: 211 0000CBC5 4d effffffe79 clrl _force_loop
218: 212 0000CBCB # subtest = 2;
219: 213 0000CBCB 0d 02 effffffe72 movl $2,_subtest
220: 214 0000CBD2 # for( index = 0; index < max_ldf_1_index; index++ ) {
221: 215 0000CBD2 4d effffffe6c clrl _index
222: 216 0000CBD8 L256:
223: 217 0000CBD8 1d effffffe66 effffffe61 cmpl _index,_max_ldf_1_index
224: 218 0000CBE3 91 03 13 00ee jgeq L255
225: 219 0000CBE8 # sgl_ld_acc = ldf_1_data[index].ld; /* get value to load */
226: 220 0000CBE8 0d effffffe56 50 movl _index,r0
227: 221 0000CBEF 48 03 50 50 shll $3,r0,r0
228: 222 0000CBF3 0d e000000000 effffffe46 movl _ldf_1_data(r0),_sgl_ld_acc
229: 223 0000CBFE # sgl_expected = ldf_1_data[index].exp; /* get expected result */
230: 224 0000CBFE 0d effffffe40 50 movl _index,r0
231: 225 0000CC05 48 03 50 50 shll $3,r0,r0
232: 226 0000CC09 0d e000000004 effffffe30 movl _ldf_1_data+4(r0),_sgl_expected
233: 227 0000CC14 # /*
234: 228 0000CC14 # * If LOOP ON ERROR is set, this is the loop for this subtest.
235: 229 0000CC14 # * The force loop flag is set after the first error.
236: 230 0000CC14 # */
237: 231 0000CC14 # asm("_ldf_2_lp1:");
238: 232 0000CC14 _ldf_2_lp1:
239: 233 0000CC14 # asm("ldf _sgl_ld_acc"); /* load the value */
240: 234 0000CC14 06 effffffe2a ldf _sgl_ld_acc
241: 235 0000CC1A # asm("nop");
242: 236 0000CC1A 10 nop
243: 237 0000CC1B # asm("stf _sgl_st_acc"); /* store the result */
244: 238 0000CC1B 26 effffffe23 stf _sgl_st_acc
245: 239 0000CC21 # if( force_loop )
246: 240 0000CC21 5d effffffe1d tstl _force_loop
247: 241 0000CC27 31 02 jeql L257
248: 242 0000CC29 # asm("brb _ldf_2_lp1");; /* loop on the error */
249: 243 0000CC29 11 e9 brb _ldf_2_lp1
250: 244 0000CC2B L257:
251: 245 0000CC2B # /*
252: 246 0000CC2B # * end error loop - test the results
253: 247 0000CC2B # */
254: 248 0000CC2B # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
255: 249 0000CC2B 1d effffffe13 effffffe0e cmpl _sgl_st_acc,_sgl_expected
256: 250 0000CC36 21 03 13 0092 jeql L258
257: 251 0000CC3B # errcnt++; /* bump the error count */
258: 252 0000CC3B 6d effffffe03 incl _errcnt
259: 253 0000CC41 # if( prt_error ) {
260: 254 0000CC41 5d effffffdfd tstl _prt_error
261: 255 0000CC47 31 61 jeql L259
262: 256 0000CC49 # print_ldf_er_hdr();
263: 257 0000CC49 fe 04 ef0000087e callf $4,_print_ldf_er_hdr
264: 258 0000CC50 # writes(" (Cache Data) - BAD FINAL ACC\n");
265: 259 0000CC50 .data 1
266: 260 00000c47 * L260:
267: 261 00000c47 * 2028436163686520446174612 .ascii " (Cache Data) - BAD FINAL ACC\12\0"
268: 9202D204241442046494E414C
269: 204143430A00
270: 262 00000c66 * .text
271: 263 0000CC50 dd 8f00000c47 pushl $L260
272: 264 0000CC56 fe 08 effffffde7 callf $8,_writes
273: 265 0000CC5D # print_ldf_data();
274: 266 0000CC5D fe 04 ef000008da callf $4,_print_ldf_data
275: 267 0000CC64 # writes(", data index = ");
276: 268 0000CC64 .data 1
277: 269 00000c66 * L261:
278: 270 00000c66 * 2C20206461746120696E64657 .ascii ", data index = \0"
279: 8203D2000
280: 271 00000c77 * .text
281: 272 0000CC64 dd 8f00000c66 pushl $L261
282: 273 0000CC6A fe 08 effffffdd3 callf $8,_writes
283: 274 0000CC71 # writed( index );
284: 275 0000CC71 dd effffffdcd pushl _index
285: 276 0000CC77 fe 08 effffffdc6 callf $8,_writed
286: 277 0000CC7E # writec('\n');
287: 278 0000CC7E dd 0a pushl $10
288: 279 0000CC80 fe 08 effffffdbd callf $8,_writec
289: 280 0000CC87 # writes(" Acc expected = ");
290: 281 0000CC87 .data 1
291: 282 00000c77 * L262:
292: 283 00000c77 * 2020202020202020202020202 .ascii " Acc expected = \0"
293: 0202020202020202020204163
294: 63206578706563746564203D2
295: 000
296: 284 00000c9e * .text
297: 285 0000CC87 dd 8f00000c77 pushl $L262
298: 286 0000CC8D fe 08 effffffdb0 callf $8,_writes
299: 287 0000CC94 # write32h( sgl_expected );
300: 288 0000CC94 dd effffffdaa pushl _sgl_expected
301: 289 0000CC9A fe 08 effffffda3 callf $8,_write32h
302: 290 0000CCA1 # writec('\n');
303: 291 0000CCA1 dd 0a pushl $10
304: 292 0000CCA3 fe 08 effffffd9a callf $8,_writec
305: 293 0000CCAA # }
306: 294 0000CCAA # if( halt_flg )
307: 295 0000CCAA L259:
308: 296 0000CCAA 5d effffffd94 tstl _halt_flg
309: 297 0000CCB0 31 09 jeql L263
310: 298 0000CCB2 # ldf_er_halt( BAD_ACC_HLT ); /* halt on the error */
311: 299 0000CCB2 dd 01 pushl $1
312: 300 0000CCB4 fe 08 ef000008bf callf $8,_ldf_er_halt
313: 301 0000CCBB # if( loop_on_err ) {
314: 302 0000CCBB L263:
315: 303 0000CCBB 5d effffffd83 tstl _loop_on_err
316: 304 0000CCC1 31 0a jeql L264
317: 305 0000CCC3 # force_loop = TRUE; /* set the force loop flag */
318: 306 0000CCC3 0d 01 effffffd7a movl $1,_force_loop
319: 307 0000CCCA # asm("brw _ldf_2_lp1");; /* and loop on the error */
320: 308 0000CCCA 13 ff47 brw _ldf_2_lp1
321: 309 0000CCCD # } /* end of loop on error */
322: 310 0000CCCD # } /* end of compare error */
323: 311 0000CCCD L264:
324: 312 0000CCCD # } /* end of WHILE loop */
325: 313 0000CCCD L258:
326: 314 0000CCCD L254:
327: 315 0000CCCD 6d effffffd71 incl _index
328: 316 0000CCD3 13 ff02 jbr L256
329: 317 0000CCD6 L255:
330: 318 0000CCD6 # } /* end of subtest 2 */
331: 319 0000CCD6 40 ret#2
332: 320 0000CCD7 .set L250,0x0
333: 321 0000CCD7 L252:
334: 322 0000CCD7 13 feeb jbr L253
335: 323 0000CCDA .data
336: 324 00000be8 * .text
337: 325 0000CCDA .align 1
338: 326 0000CCDA .globl _ldf_3
339: 327 0000CCDA _ldf_3:
340: 328 0000CCDA 0000 .word L265
341: 329 0000CCDC #
342: 330 0000CCDC #
343: 331 0000CCDC #
344: 332 0000CCDC # /************************************************************************
345: 333 0000CCDC # *
346: 334 0000CCDC # * SUBTEST 3 - Check for register corruption (ldf)
347: 335 0000CCDC # *
348: 336 0000CCDC # ************************************************************************/
349: 337 0000CCDC # ldf_3()
350: 338 0000CCDC # {
351: 339 0000CCDC 13 015c jbr L267
352: 340 0000CCDF L268:
353: 341 0000CCDF # force_loop = FALSE; /* clear force_loop flg */
354: 342 0000CCDF 4d effffffd5f clrl _force_loop
355: 343 0000CCE5 # subtest = 3;
356: 344 0000CCE5 0d 03 effffffd58 movl $3,_subtest
357: 345 0000CCEC # fill_reg_buf( load_regs ); /* get patterns for regs */
358: 346 0000CCEC dd 8f00000000 pushl $_load_regs
359: 347 0000CCF2 fe 08 effffffd4b callf $8,_fill_reg_buf
360: 348 0000CCF9 # index = 0;
361: 349 0000CCF9 4d effffffd45 clrl _index
362: 350 0000CCFF # sgl_ld_acc = ldf_1_data[0].ld; /* get value to load */
363: 351 0000CCFF 0d effffffd3f effffffd3a movl _ldf_1_data,_sgl_ld_acc
364: 352 0000CD0A # sgl_expected = ldf_1_data[0].exp; /* get expected result */
365: 353 0000CD0A 0d effffffd38 effffffd2f movl _ldf_1_data+4,_sgl_expected
366: 354 0000CD15 # /*
367: 355 0000CD15 # * If LOOP ON ERROR is set, this is the loop for this subtest.
368: 356 0000CD15 # * The force loop flag is set after the first error.
369: 357 0000CD15 # */
370: 358 0000CD15 # asm("_ldf_3_lp1:");
371: 359 0000CD15 _ldf_3_lp1:
372: 360 0000CD15 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
373: 361 0000CD15 ab 891fff effffffd26 loadr $0x1fff,_load_regs
374: 362 0000CD1E # asm("nop");
375: 363 0000CD1E 10 nop
376: 364 0000CD1F # asm("ldf _sgl_ld_acc"); /* load the accumulator */
377: 365 0000CD1F 06 effffffd1f ldf _sgl_ld_acc
378: 366 0000CD25 # asm("nop");
379: 367 0000CD25 10 nop
380: 368 0000CD26 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
381: 369 0000CD26 bb 891fff effffffd15 storer $0x1fff,_store_regs
382: 370 0000CD2F # asm("nop");
383: 371 0000CD2F 10 nop
384: 372 0000CD30 # asm("stf _sgl_st_acc"); /* save the accumulator */
385: 373 0000CD30 26 effffffd0e stf _sgl_st_acc
386: 374 0000CD36 # if( force_loop )
387: 375 0000CD36 5d effffffd08 tstl _force_loop
388: 376 0000CD3C 31 02 jeql L270
389: 377 0000CD3E # asm("brb _ldf_3_lp1");; /* loop on the error */
390: 378 0000CD3E 11 d5 brb _ldf_3_lp1
391: 379 0000CD40 L270:
392: 380 0000CD40 # /*
393: 381 0000CD40 # * Now compare the stored register values to those that were loaded
394: 382 0000CD40 # */
395: 383 0000CD40 # index2 = 0;
396: 384 0000CD40 4d effffffcfe clrl _index2
397: 385 0000CD46 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
398: 386 0000CD46 L271:
399: 387 0000CD46 0d effffffcf8 50 movl _index2,r0
400: 388 0000CD4D 0d effffffcf1 51 movl _index2,r1
401: 389 0000CD54 1d 40effffffce9 cmpl _load_regs[r0],_store_regs[r1]
402: 41effffffce3
403: 390 0000CD61 21 11 jneq L272
404: 391 0000CD63 1d effffffcdb 0d cmpl _index2,$13
405: 392 0000CD6A 81 08 jgeq L272
406: 393 0000CD6C # index2++; /* check reg values */
407: 394 0000CD6C 6d effffffcd2 incl _index2
408: 395 0000CD72 11 d2 jbr L271
409: 396 0000CD74 L272:
410: 397 0000CD74 # if( index2 < 13 ) { /* error if index2 < 13 */
411: 398 0000CD74 1d effffffcca 0d cmpl _index2,$13
412: 399 0000CD7B 91 03 13 00ba jgeq L273
413: 400 0000CD80 # errcnt++; /* bump the error count */
414: 401 0000CD80 6d effffffcbe incl _errcnt
415: 402 0000CD86 # if( prt_error ) {
416: 403 0000CD86 5d effffffcb8 tstl _prt_error
417: 404 0000CD8C 21 03 13 0086 jeql L274
418: 405 0000CD91 # print_ldf_er_hdr();
419: 406 0000CD91 fe 04 ef00000736 callf $4,_print_ldf_er_hdr
420: 407 0000CD98 # writes(" - A REGISTER WAS MODIFIED\n");
421: 408 0000CD98 .data 1
422: 409 00000c9e * L275:
423: 410 00000c9e * 202D204120524547495354455 .ascii " - A REGISTER WAS MODIFIED\12\0"
424: 220574153204D4F4449464945
425: 440A00
426: 411 00000cba * .text
427: 412 0000CD98 dd 8f00000c9e pushl $L275
428: 413 0000CD9E fe 08 effffffc9f callf $8,_writes
429: 414 0000CDA5 # print_ldf_data();
430: 415 0000CDA5 fe 04 ef00000792 callf $4,_print_ldf_data
431: 416 0000CDAC # writes("register "); /* print the information */
432: 417 0000CDAC .data 1
433: 418 00000cba * L276:
434: 419 00000cba * 72656769737465722000 .ascii "register \0"
435: 420 00000cc4 * .text
436: 421 0000CDAC dd 8f00000cba pushl $L276
437: 422 0000CDB2 fe 08 effffffc8b callf $8,_writes
438: 423 0000CDB9 # writed( index2 ); /* about the corrupted */
439: 424 0000CDB9 dd effffffc85 pushl _index2
440: 425 0000CDBF fe 08 effffffc7e callf $8,_writed
441: 426 0000CDC6 # writes(" = "); /* register */
442: 427 0000CDC6 .data 1
443: 428 00000cc4 * L277:
444: 429 00000cc4 * 203D2000 .ascii " = \0"
445: 430 00000cc8 * .text
446: 431 0000CDC6 dd 8f00000cc4 pushl $L277
447: 432 0000CDCC fe 08 effffffc71 callf $8,_writes
448: 433 0000CDD3 # write32h( store_regs[index2] );
449: 434 0000CDD3 0d effffffc6b 50 movl _index2,r0
450: 435 0000CDDA dd 40effffffc63 pushl _store_regs[r0]
451: 436 0000CDE1 fe 08 effffffc5c callf $8,_write32h
452: 437 0000CDE8 # writes(", should be = ");
453: 438 0000CDE8 .data 1
454: 439 00000cc8 * L278:
455: 440 00000cc8 * 2C202073686F756C642062652 .ascii ", should be = \0"
456: 03D2000
457: 441 00000cd8 * .text
458: 442 0000CDE8 dd 8f00000cc8 pushl $L278
459: 443 0000CDEE fe 08 effffffc4f callf $8,_writes
460: 444 0000CDF5 # write32h( load_regs[index2] );
461: 445 0000CDF5 0d effffffc49 50 movl _index2,r0
462: 446 0000CDFC dd 40effffffc41 pushl _load_regs[r0]
463: 447 0000CE03 fe 08 effffffc3a callf $8,_write32h
464: 448 0000CE0A # writes("\n");
465: 449 0000CE0A .data 1
466: 450 00000cd8 * L279:
467: 451 00000cd8 * 0A00 .ascii "\12\0"
468: 452 00000cda * .text
469: 453 0000CE0A dd 8f00000cd8 pushl $L279
470: 454 0000CE10 fe 08 effffffc2d callf $8,_writes
471: 455 0000CE17 # }
472: 456 0000CE17 # if( halt_flg )
473: 457 0000CE17 L274:
474: 458 0000CE17 5d effffffc27 tstl _halt_flg
475: 459 0000CE1D 31 09 jeql L280
476: 460 0000CE1F # ldf_er_halt( BAD_REG_HLT ); /* halt on the error */
477: 461 0000CE1F dd 02 pushl $2
478: 462 0000CE21 fe 08 ef00000752 callf $8,_ldf_er_halt
479: 463 0000CE28 # if( loop_on_err ) {
480: 464 0000CE28 L280:
481: 465 0000CE28 5d effffffc16 tstl _loop_on_err
482: 466 0000CE2E 31 0a jeql L281
483: 467 0000CE30 # force_loop = TRUE; /* set the force loop flag */
484: 468 0000CE30 0d 01 effffffc0d movl $1,_force_loop
485: 469 0000CE37 # asm("brw _ldf_3_lp1"); /* and loop on the error */
486: 470 0000CE37 13 fedb brw _ldf_3_lp1
487: 471 0000CE3A # } /* end of loop on error */
488: 472 0000CE3A # } /* end of register corruption error */
489: 473 0000CE3A L281:
490: 474 0000CE3A # } /* end of subtest 3 */
491: 475 0000CE3A L273:
492: 476 0000CE3A 40 ret#2
493: 477 0000CE3B .set L265,0x0
494: 478 0000CE3B L267:
495: 479 0000CE3B 13 fea1 jbr L268
496: 480 0000CE3E .data
497: 481 00000be8 * .text
498: 482 0000CE3E .align 1
499: 483 0000CE3E .globl _ldf_4
500: 484 0000CE3E _ldf_4:
501: 485 0000CE3E 0000 .word L282
502: 486 0000CE40 #
503: 487 0000CE40 #
504: 488 0000CE40 #
505: 489 0000CE40 # /************************************************************************
506: 490 0000CE40 # *
507: 491 0000CE40 # * SUBTEST 4 - Check for register corruption (stf)
508: 492 0000CE40 # *
509: 493 0000CE40 # ************************************************************************/
510: 494 0000CE40 # ldf_4()
511: 495 0000CE40 # {
512: 496 0000CE40 13 015c jbr L284
513: 497 0000CE43 L285:
514: 498 0000CE43 # force_loop = FALSE; /* clear force_loop flg */
515: 499 0000CE43 4d effffffbfb clrl _force_loop
516: 500 0000CE49 # subtest = 4;
517: 501 0000CE49 0d 04 effffffbf4 movl $4,_subtest
518: 502 0000CE50 # fill_reg_buf( load_regs ); /* get patterns for regs */
519: 503 0000CE50 dd 8f00000000 pushl $_load_regs
520: 504 0000CE56 fe 08 effffffbe7 callf $8,_fill_reg_buf
521: 505 0000CE5D # index = 0;
522: 506 0000CE5D 4d effffffbe1 clrl _index
523: 507 0000CE63 # sgl_ld_acc = ldf_1_data[0].ld; /* get value to store */
524: 508 0000CE63 0d effffffbdb effffffbd6 movl _ldf_1_data,_sgl_ld_acc
525: 509 0000CE6E # sgl_expected = ldf_1_data[0].exp; /* get expected result */
526: 510 0000CE6E 0d effffffbd4 effffffbcb movl _ldf_1_data+4,_sgl_expected
527: 511 0000CE79 # /*
528: 512 0000CE79 # * If LOOP ON ERROR is set, this is the loop for this subtest.
529: 513 0000CE79 # * The force loop flag is set after the first error.
530: 514 0000CE79 # */
531: 515 0000CE79 # asm("_ldf_4_lp1:");
532: 516 0000CE79 _ldf_4_lp1:
533: 517 0000CE79 # asm("ldf _sgl_ld_acc"); /* load the accumulator */
534: 518 0000CE79 06 effffffbc5 ldf _sgl_ld_acc
535: 519 0000CE7F # asm("nop");
536: 520 0000CE7F 10 nop
537: 521 0000CE80 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
538: 522 0000CE80 ab 891fff effffffbbb loadr $0x1fff,_load_regs
539: 523 0000CE89 # asm("nop");
540: 524 0000CE89 10 nop
541: 525 0000CE8A # asm("stf _sgl_st_acc"); /* save the accumulator */
542: 526 0000CE8A 26 effffffbb4 stf _sgl_st_acc
543: 527 0000CE90 # asm("nop");
544: 528 0000CE90 10 nop
545: 529 0000CE91 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
546: 530 0000CE91 bb 891fff effffffbaa storer $0x1fff,_store_regs
547: 531 0000CE9A # if( force_loop )
548: 532 0000CE9A 5d effffffba4 tstl _force_loop
549: 533 0000CEA0 31 02 jeql L286
550: 534 0000CEA2 # asm("brb _ldf_4_lp1");; /* loop on the error */
551: 535 0000CEA2 11 d5 brb _ldf_4_lp1
552: 536 0000CEA4 L286:
553: 537 0000CEA4 # /*
554: 538 0000CEA4 # * Now compare the stored register values to those that were loaded
555: 539 0000CEA4 # */
556: 540 0000CEA4 # index2 = 0;
557: 541 0000CEA4 4d effffffb9a clrl _index2
558: 542 0000CEAA # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
559: 543 0000CEAA L287:
560: 544 0000CEAA 0d effffffb94 50 movl _index2,r0
561: 545 0000CEB1 0d effffffb8d 51 movl _index2,r1
562: 546 0000CEB8 1d 40effffffb85 cmpl _load_regs[r0],_store_regs[r1]
563: 41effffffb7f
564: 547 0000CEC5 21 11 jneq L288
565: 548 0000CEC7 1d effffffb77 0d cmpl _index2,$13
566: 549 0000CECE 81 08 jgeq L288
567: 550 0000CED0 # index2++; /* check reg values */
568: 551 0000CED0 6d effffffb6e incl _index2
569: 552 0000CED6 11 d2 jbr L287
570: 553 0000CED8 L288:
571: 554 0000CED8 # if( index2 < 13 ) { /* error if index2 < 13 */
572: 555 0000CED8 1d effffffb66 0d cmpl _index2,$13
573: 556 0000CEDF 91 03 13 00ba jgeq L289
574: 557 0000CEE4 # errcnt++; /* bump the error count */
575: 558 0000CEE4 6d effffffb5a incl _errcnt
576: 559 0000CEEA # if( prt_error ) {
577: 560 0000CEEA 5d effffffb54 tstl _prt_error
578: 561 0000CEF0 21 03 13 0086 jeql L290
579: 562 0000CEF5 # print_ldf_er_hdr();
580: 563 0000CEF5 fe 04 ef000005d2 callf $4,_print_ldf_er_hdr
581: 564 0000CEFC # writes(" - A REGISTER WAS MODIFIED\n");
582: 565 0000CEFC .data 1
583: 566 00000cda * L291:
584: 567 00000cda * 202D204120524547495354455 .ascii " - A REGISTER WAS MODIFIED\12\0"
585: 220574153204D4F4449464945
586: 440A00
587: 568 00000cf6 * .text
588: 569 0000CEFC dd 8f00000cda pushl $L291
589: 570 0000CF02 fe 08 effffffb3b callf $8,_writes
590: 571 0000CF09 # print_ldf_data();
591: 572 0000CF09 fe 04 ef0000062e callf $4,_print_ldf_data
592: 573 0000CF10 # writes("register "); /* print the information */
593: 574 0000CF10 .data 1
594: 575 00000cf6 * L292:
595: 576 00000cf6 * 72656769737465722000 .ascii "register \0"
596: 577 00000d00 * .text
597: 578 0000CF10 dd 8f00000cf6 pushl $L292
598: 579 0000CF16 fe 08 effffffb27 callf $8,_writes
599: 580 0000CF1D # writed( index2 ); /* about the corrupted */
600: 581 0000CF1D dd effffffb21 pushl _index2
601: 582 0000CF23 fe 08 effffffb1a callf $8,_writed
602: 583 0000CF2A # writes(" = "); /* register */
603: 584 0000CF2A .data 1
604: 585 00000d00 * L293:
605: 586 00000d00 * 203D2000 .ascii " = \0"
606: 587 00000d04 * .text
607: 588 0000CF2A dd 8f00000d00 pushl $L293
608: 589 0000CF30 fe 08 effffffb0d callf $8,_writes
609: 590 0000CF37 # write32h( store_regs[index2] );
610: 591 0000CF37 0d effffffb07 50 movl _index2,r0
611: 592 0000CF3E dd 40effffffaff pushl _store_regs[r0]
612: 593 0000CF45 fe 08 effffffaf8 callf $8,_write32h
613: 594 0000CF4C # writes(", should be = ");
614: 595 0000CF4C .data 1
615: 596 00000d04 * L294:
616: 597 00000d04 * 2C202073686F756C642062652 .ascii ", should be = \0"
617: 03D2000
618: 598 00000d14 * .text
619: 599 0000CF4C dd 8f00000d04 pushl $L294
620: 600 0000CF52 fe 08 effffffaeb callf $8,_writes
621: 601 0000CF59 # write32h( load_regs[index2] );
622: 602 0000CF59 0d effffffae5 50 movl _index2,r0
623: 603 0000CF60 dd 40effffffadd pushl _load_regs[r0]
624: 604 0000CF67 fe 08 effffffad6 callf $8,_write32h
625: 605 0000CF6E # writes("\n");
626: 606 0000CF6E .data 1
627: 607 00000d14 * L295:
628: 608 00000d14 * 0A00 .ascii "\12\0"
629: 609 00000d16 * .text
630: 610 0000CF6E dd 8f00000d14 pushl $L295
631: 611 0000CF74 fe 08 effffffac9 callf $8,_writes
632: 612 0000CF7B # }
633: 613 0000CF7B # if( halt_flg )
634: 614 0000CF7B L290:
635: 615 0000CF7B 5d effffffac3 tstl _halt_flg
636: 616 0000CF81 31 09 jeql L296
637: 617 0000CF83 # ldf_er_halt( BAD_REG_HLT ); /* halt on the error */
638: 618 0000CF83 dd 02 pushl $2
639: 619 0000CF85 fe 08 ef000005ee callf $8,_ldf_er_halt
640: 620 0000CF8C # if( loop_on_err ) {
641: 621 0000CF8C L296:
642: 622 0000CF8C 5d effffffab2 tstl _loop_on_err
643: 623 0000CF92 31 0a jeql L297
644: 624 0000CF94 # force_loop = TRUE; /* set the force loop flag */
645: 625 0000CF94 0d 01 effffffaa9 movl $1,_force_loop
646: 626 0000CF9B # asm("brw _ldf_4_lp1"); /* and loop on the error */
647: 627 0000CF9B 13 fedb brw _ldf_4_lp1
648: 628 0000CF9E # } /* end of loop on error */
649: 629 0000CF9E # } /* end of register corruption error */
650: 630 0000CF9E L297:
651: 631 0000CF9E # } /* end of subtest 4 */
652: 632 0000CF9E L289:
653: 633 0000CF9E 40 ret#2
654: 634 0000CF9F .set L282,0x0
655: 635 0000CF9F L284:
656: 636 0000CF9F 13 fea1 jbr L285
657: 637 0000CFA2 .data
658: 638 00000be8 * .text
659: 639 0000CFA2 .align 1
660: 640 0000CFA2 .globl _ldf_5
661: 641 0000CFA2 _ldf_5:
662: 642 0000CFA2 0000 .word L298
663: 643 0000CFA4 #
664: 644 0000CFA4 #
665: 645 0000CFA4 #
666: 646 0000CFA4 # /************************************************************************
667: 647 0000CFA4 # *
668: 648 0000CFA4 # * SUBTEST 5 - Check for PSL corruption (ldf)
669: 649 0000CFA4 # *
670: 650 0000CFA4 # ************************************************************************/
671: 651 0000CFA4 # ldf_5()
672: 652 0000CFA4 # {
673: 653 0000CFA4 13 014a jbr L300
674: 654 0000CFA7 L301:
675: 655 0000CFA7 # force_loop = FALSE; /* clear force_loop flg */
676: 656 0000CFA7 4d effffffa97 clrl _force_loop
677: 657 0000CFAD # subtest = 5;
678: 658 0000CFAD 0d 05 effffffa90 movl $5,_subtest
679: 659 0000CFB4 # for( index = 0; index < 3; index++ ) {
680: 660 0000CFB4 4d effffffa8a clrl _index
681: 661 0000CFBA L304:
682: 662 0000CFBA 1d effffffa84 03 cmpl _index,$3
683: 663 0000CFC1 91 03 13 012a jgeq L303
684: 664 0000CFC6 # sgl_ld_acc = ldf_1_data[index].ld; /* get value to load */
685: 665 0000CFC6 0d effffffa78 50 movl _index,r0
686: 666 0000CFCD 48 03 50 50 shll $3,r0,r0
687: 667 0000CFD1 0d e000000000 effffffa68 movl _ldf_1_data(r0),_sgl_ld_acc
688: 668 0000CFDC # sgl_expected = ldf_1_data[index].exp; /* get expected */
689: 669 0000CFDC 0d effffffa62 50 movl _index,r0
690: 670 0000CFE3 48 03 50 50 shll $3,r0,r0
691: 671 0000CFE7 0d e000000004 effffffa52 movl _ldf_1_data+4(r0),_sgl_expected
692: 672 0000CFF2 # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
693: 673 0000CFF2 0d effffffa4c 50 movl _status_index,r0
694: 674 0000CFF9 0d 40effffffa44 movl _status_array[r0],_sgl_dummy1
695: effffffa3f
696: 675 0000D005 # /*
697: 676 0000D005 # * If LOOP ON ERROR is set, this is the loop for this subtest.
698: 677 0000D005 # * The force loop flag is set after the first error.
699: 678 0000D005 # */
700: 679 0000D005 # asm("_ldf_5_lp1:");
701: 680 0000D005 _ldf_5_lp1:
702: 681 0000D005 # asm("tstl _sgl_dummy1"); /* set the PSL status */
703: 682 0000D005 5d effffffa39 tstl _sgl_dummy1
704: 683 0000D00B # asm("movpsl _init_psl"); /* save the initial PSL */
705: 684 0000D00B cd effffffa33 movpsl _init_psl
706: 685 0000D011 # asm("nop");
707: 686 0000D011 10 nop
708: 687 0000D012 # asm("ldf _sgl_ld_acc"); /* load the accumulator */
709: 688 0000D012 06 effffffa2c ldf _sgl_ld_acc
710: 689 0000D018 # asm("nop");
711: 690 0000D018 10 nop
712: 691 0000D019 # asm("movpsl _psl_val"); /* save the final PSL */
713: 692 0000D019 cd effffffa25 movpsl _psl_val
714: 693 0000D01F # asm("nop");
715: 694 0000D01F 10 nop
716: 695 0000D020 # asm("stf _sgl_st_acc"); /* save the accumulator */
717: 696 0000D020 26 effffffa1e stf _sgl_st_acc
718: 697 0000D026 # if( force_loop )
719: 698 0000D026 5d effffffa18 tstl _force_loop
720: 699 0000D02C 31 02 jeql L305
721: 700 0000D02E # asm("brb _ldf_5_lp1");; /* loop on the error */
722: 701 0000D02E 11 d5 brb _ldf_5_lp1
723: 702 0000D030 L305:
724: 703 0000D030 # /*
725: 704 0000D030 # * Now compare the final PSL to the initial PSL -they should be the same
726: 705 0000D030 # */
727: 706 0000D030 # if( psl_val != init_psl ) {
728: 707 0000D030 1d effffffa0e effffffa09 cmpl _psl_val,_init_psl
729: 708 0000D03B 21 03 13 00a7 jeql L306
730: 709 0000D040 # errcnt++; /* bump the error count */
731: 710 0000D040 6d effffff9fe incl _errcnt
732: 711 0000D046 # if( prt_error ) {
733: 712 0000D046 5d effffff9f8 tstl _prt_error
734: 713 0000D04C 31 76 jeql L307
735: 714 0000D04E # print_ldf_er_hdr();
736: 715 0000D04E fe 04 ef00000479 callf $4,_print_ldf_er_hdr
737: 716 0000D055 # writes(" - INCORRECT FINAL PSL\n");
738: 717 0000D055 .data 1
739: 718 00000d16 * L308:
740: 719 00000d16 * 202D20494E434F52524543542 .ascii " - INCORRECT FINAL PSL\12\0"
741: 046494E414C2050534C0A00
742: 720 00000d2e * .text
743: 721 0000D055 dd 8f00000d16 pushl $L308
744: 722 0000D05B fe 08 effffff9e2 callf $8,_writes
745: 723 0000D062 # print_ldf_data();
746: 724 0000D062 fe 04 ef000004d5 callf $4,_print_ldf_data
747: 725 0000D069 # writes("initial PSL = ");
748: 726 0000D069 .data 1
749: 727 00000d2e * L309:
750: 728 00000d2e * 696E697469616C2050534C203 .ascii "initial PSL = \0"
751: D2000
752: 729 00000d3d * .text
753: 730 0000D069 dd 8f00000d2e pushl $L309
754: 731 0000D06F fe 08 effffff9ce callf $8,_writes
755: 732 0000D076 # write32h( init_psl );
756: 733 0000D076 dd effffff9c8 pushl _init_psl
757: 734 0000D07C fe 08 effffff9c1 callf $8,_write32h
758: 735 0000D083 # writes(", final PSL = ");
759: 736 0000D083 .data 1
760: 737 00000d3d * L310:
761: 738 00000d3d * 2C20202066696E616C2050534 .ascii ", final PSL = \0"
762: C203D2000
763: 739 00000d4e * .text
764: 740 0000D083 dd 8f00000d3d pushl $L310
765: 741 0000D089 fe 08 effffff9b4 callf $8,_writes
766: 742 0000D090 # write32h( psl_val );
767: 743 0000D090 dd effffff9ae pushl _psl_val
768: 744 0000D096 fe 08 effffff9a7 callf $8,_write32h
769: 745 0000D09D # writes(", expected PSL = ");
770: 746 0000D09D .data 1
771: 747 00000d4e * L311:
772: 748 00000d4e * 2C20206578706563746564205 .ascii ", expected PSL = \0"
773: 0534C203D2000
774: 749 00000d61 * .text
775: 750 0000D09D dd 8f00000d4e pushl $L311
776: 751 0000D0A3 fe 08 effffff99a callf $8,_writes
777: 752 0000D0AA # write32h( exp_psl );
778: 753 0000D0AA dd effffff994 pushl _exp_psl
779: 754 0000D0B0 fe 08 effffff98d callf $8,_write32h
780: 755 0000D0B7 # writes("\n");
781: 756 0000D0B7 .data 1
782: 757 00000d61 * L312:
783: 758 00000d61 * 0A00 .ascii "\12\0"
784: 759 00000d63 * .text
785: 760 0000D0B7 dd 8f00000d61 pushl $L312
786: 761 0000D0BD fe 08 effffff980 callf $8,_writes
787: 762 0000D0C4 # }
788: 763 0000D0C4 # if( halt_flg )
789: 764 0000D0C4 L307:
790: 765 0000D0C4 5d effffff97a tstl _halt_flg
791: 766 0000D0CA 31 09 jeql L313
792: 767 0000D0CC # ldf_er_halt( BAD_PSL_HLT ); /* halt on the error */
793: 768 0000D0CC dd 03 pushl $3
794: 769 0000D0CE fe 08 ef000004a5 callf $8,_ldf_er_halt
795: 770 0000D0D5 # if( loop_on_err ) {
796: 771 0000D0D5 L313:
797: 772 0000D0D5 5d effffff969 tstl _loop_on_err
798: 773 0000D0DB 31 0a jeql L314
799: 774 0000D0DD # force_loop = TRUE; /* set the force loop flag */
800: 775 0000D0DD 0d 01 effffff960 movl $1,_force_loop
801: 776 0000D0E4 # asm("brw _ldf_5_lp1");; /* and loop on the error */
802: 777 0000D0E4 13 ff1e brw _ldf_5_lp1
803: 778 0000D0E7 # } /* end of loop on error */
804: 779 0000D0E7 # } /* end of PSL corruption error */
805: 780 0000D0E7 L314:
806: 781 0000D0E7 # } /* end of WHILE loop */
807: 782 0000D0E7 L306:
808: 783 0000D0E7 L302:
809: 784 0000D0E7 6d effffff957 incl _index
810: 785 0000D0ED 13 feca jbr L304
811: 786 0000D0F0 L303:
812: 787 0000D0F0 # } /* end of subtest 5 */
813: 788 0000D0F0 40 ret#2
814: 789 0000D0F1 .set L298,0x0
815: 790 0000D0F1 L300:
816: 791 0000D0F1 13 feb3 jbr L301
817: 792 0000D0F4 .data
818: 793 00000be8 * .text
819: 794 0000D0F4 .align 1
820: 795 0000D0F4 .globl _ldf_6
821: 796 0000D0F4 _ldf_6:
822: 797 0000D0F4 0000 .word L315
823: 798 0000D0F6 #
824: 799 0000D0F6 #
825: 800 0000D0F6 #
826: 801 0000D0F6 # /************************************************************************
827: 802 0000D0F6 # *
828: 803 0000D0F6 # * SUBTEST 6 - Check for PSL corruption (stf)
829: 804 0000D0F6 # *
830: 805 0000D0F6 # ************************************************************************/
831: 806 0000D0F6 # ldf_6()
832: 807 0000D0F6 # {
833: 808 0000D0F6 13 0197 jbr L317
834: 809 0000D0F9 L318:
835: 810 0000D0F9 # force_loop = FALSE;
836: 811 0000D0F9 4d effffff945 clrl _force_loop
837: 812 0000D0FF # index = 0; /* clear the data index */
838: 813 0000D0FF 4d effffff93f clrl _index
839: 814 0000D105 # status_index = 0; /* clear the status index */
840: 815 0000D105 4d effffff939 clrl _status_index
841: 816 0000D10B # do {
842: 817 0000D10B L321:
843: 818 0000D10B # sgl_ld_acc = ldf_1_data[index].ld; /* get the dbl operand */
844: 819 0000D10B 0d effffff933 50 movl _index,r0
845: 820 0000D112 48 03 50 50 shll $3,r0,r0
846: 821 0000D116 0d e000000000 effffff923 movl _ldf_1_data(r0),_sgl_ld_acc
847: 822 0000D121 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
848: 823 0000D121 0d effffff91d 50 movl _status_index,r0
849: 824 0000D128 0d 40effffff915 movl _status_array[r0],_sgl_dummy1
850: effffff910
851: 825 0000D134 # /*
852: 826 0000D134 # * If LOOP ON ERROR is set, this is the loop for this subtest.
853: 827 0000D134 # * The force loop flag is set after the first error.
854: 828 0000D134 # */
855: 829 0000D134 # asm("_ldf_6_lp1:");
856: 830 0000D134 _ldf_6_lp1:
857: 831 0000D134 # asm("ldf _sgl_ld_acc"); /* load the operand */
858: 832 0000D134 06 effffff90a ldf _sgl_ld_acc
859: 833 0000D13A # asm("tstl _sgl_dummy1"); /* generate initial status */
860: 834 0000D13A 5d effffff904 tstl _sgl_dummy1
861: 835 0000D140 # asm("movpsl _init_psl"); /* save the initial status */
862: 836 0000D140 cd effffff8fe movpsl _init_psl
863: 837 0000D146 # asm("stf _sgl_st_acc"); /* save the accumulator */
864: 838 0000D146 26 effffff8f8 stf _sgl_st_acc
865: 839 0000D14C # asm("movpsl _psl_val"); /* save the final status */
866: 840 0000D14C cd effffff8f2 movpsl _psl_val
867: 841 0000D152 # if( force_loop ) /* loop? */
868: 842 0000D152 5d effffff8ec tstl _force_loop
869: 843 0000D158 31 06 jeql L322
870: 844 0000D15A # asm("jmp _ldf_6_lp1");; /* run the loop again */
871: 845 0000D15A 71 efffffffd4 jmp _ldf_6_lp1
872: 846 0000D160 L322:
873: 847 0000D160 # exp_psl = init_psl; /* get the initial PSL */
874: 848 0000D160 0d effffff8de effffff8d9 movl _init_psl,_exp_psl
875: 849 0000D16B # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
876: 850 0000D16B ac 88f3 effffff8d1 andl2 $-13,_exp_psl
877: 851 0000D173 # sgl_dummy2 = sgl_ld_acc; /* get the operand */
878: 852 0000D173 0d effffff8cb effffff8c6 movl _sgl_ld_acc,_sgl_dummy2
879: 853 0000D17E # sgl_dummy2 &= 0xff800000; /* clear the fraction part */
880: 854 0000D17E ac 8fff800000 effffff8bb andl2 $-8388608,_sgl_dummy2
881: 855 0000D189 # if( !sgl_dummy2 )
882: 856 0000D189 5d effffff8b5 tstl _sgl_dummy2
883: 857 0000D18F 21 07 jneq L323
884: 858 0000D191 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
885: 859 0000D191 8c 04 effffff8ac orl2 $4,_exp_psl
886: 860 0000D198 # if( sgl_dummy2 < 0 )
887: 861 0000D198 L323:
888: 862 0000D198 5d effffff8a6 tstl _sgl_dummy2
889: 863 0000D19E 81 07 jgeq L324
890: 864 0000D1A0 # exp_psl |= PSL_N; /* expect the NEG bit set */
891: 865 0000D1A0 8c 08 effffff89d orl2 $8,_exp_psl
892: 866 0000D1A7 # if( psl_val != exp_psl ) { /* COMPARE the values */
893: 867 0000D1A7 L324:
894: 868 0000D1A7 1d effffff897 effffff892 cmpl _psl_val,_exp_psl
895: 869 0000D1B2 21 03 13 00a7 jeql L325
896: 870 0000D1B7 # errcnt++; /* bump the error count */
897: 871 0000D1B7 6d effffff887 incl _errcnt
898: 872 0000D1BD # if( prt_error ) {
899: 873 0000D1BD 5d effffff881 tstl _prt_error
900: 874 0000D1C3 31 76 jeql L326
901: 875 0000D1C5 # print_ldf_er_hdr();
902: 876 0000D1C5 fe 04 ef00000302 callf $4,_print_ldf_er_hdr
903: 877 0000D1CC # writes(" - INCORRECT FINAL PSL\n");
904: 878 0000D1CC .data 1
905: 879 00000d63 * L327:
906: 880 00000d63 * 202D20494E434F52524543542 .ascii " - INCORRECT FINAL PSL\12\0"
907: 046494E414C2050534C0A00
908: 881 00000d7b * .text
909: 882 0000D1CC dd 8f00000d63 pushl $L327
910: 883 0000D1D2 fe 08 effffff86b callf $8,_writes
911: 884 0000D1D9 # print_ldf_data();
912: 885 0000D1D9 fe 04 ef0000035e callf $4,_print_ldf_data
913: 886 0000D1E0 # writes("initial PSL = ");
914: 887 0000D1E0 .data 1
915: 888 00000d7b * L328:
916: 889 00000d7b * 696E697469616C2050534C203 .ascii "initial PSL = \0"
917: D2000
918: 890 00000d8a * .text
919: 891 0000D1E0 dd 8f00000d7b pushl $L328
920: 892 0000D1E6 fe 08 effffff857 callf $8,_writes
921: 893 0000D1ED # write32h( init_psl );
922: 894 0000D1ED dd effffff851 pushl _init_psl
923: 895 0000D1F3 fe 08 effffff84a callf $8,_write32h
924: 896 0000D1FA # writes(", final PSL = ");
925: 897 0000D1FA .data 1
926: 898 00000d8a * L329:
927: 899 00000d8a * 2C20202066696E616C2050534 .ascii ", final PSL = \0"
928: C203D2000
929: 900 00000d9b * .text
930: 901 0000D1FA dd 8f00000d8a pushl $L329
931: 902 0000D200 fe 08 effffff83d callf $8,_writes
932: 903 0000D207 # write32h( psl_val );
933: 904 0000D207 dd effffff837 pushl _psl_val
934: 905 0000D20D fe 08 effffff830 callf $8,_write32h
935: 906 0000D214 # writes(", expected PSL = ");
936: 907 0000D214 .data 1
937: 908 00000d9b * L330:
938: 909 00000d9b * 2C20206578706563746564205 .ascii ", expected PSL = \0"
939: 0534C203D2000
940: 910 00000dae * .text
941: 911 0000D214 dd 8f00000d9b pushl $L330
942: 912 0000D21A fe 08 effffff823 callf $8,_writes
943: 913 0000D221 # write32h( exp_psl );
944: 914 0000D221 dd effffff81d pushl _exp_psl
945: 915 0000D227 fe 08 effffff816 callf $8,_write32h
946: 916 0000D22E # writes("\n");
947: 917 0000D22E .data 1
948: 918 00000dae * L331:
949: 919 00000dae * 0A00 .ascii "\12\0"
950: 920 00000db0 * .text
951: 921 0000D22E dd 8f00000dae pushl $L331
952: 922 0000D234 fe 08 effffff809 callf $8,_writes
953: 923 0000D23B # }
954: 924 0000D23B # if( halt_flg )
955: 925 0000D23B L326:
956: 926 0000D23B 5d effffff803 tstl _halt_flg
957: 927 0000D241 31 09 jeql L332
958: 928 0000D243 # ldf_er_halt( BAD_PSL_HLT ); /* halt on the error */
959: 929 0000D243 dd 03 pushl $3
960: 930 0000D245 fe 08 ef0000032e callf $8,_ldf_er_halt
961: 931 0000D24C # if( loop_on_err ) {
962: 932 0000D24C L332:
963: 933 0000D24C 5d effffff7f2 tstl _loop_on_err
964: 934 0000D252 31 0a jeql L333
965: 935 0000D254 # force_loop = TRUE; /* set the force loop flag */
966: 936 0000D254 0d 01 effffff7e9 movl $1,_force_loop
967: 937 0000D25B # asm("brw _ldf_6_lp1");; /* and loop */
968: 938 0000D25B 13 fed6 brw _ldf_6_lp1
969: 939 0000D25E # }; /* end of loop-on-error */
970: 940 0000D25E L333:
971: 941 0000D25E # } /* end of compare error */
972: 942 0000D25E # if( ++status_index >= 3 )
973: 943 0000D25E L325:
974: 944 0000D25E 6d effffff7e0 incl _status_index
975: 945 0000D264 0d effffff7da 50 movl _status_index,r0
976: 946 0000D26B 1d 50 03 cmpl r0,$3
977: 947 0000D26E 91 06 jlss L334
978: 948 0000D270 # status_index = 0; /* reset the status index */
979: 949 0000D270 4d effffff7ce clrl _status_index
980: 950 0000D276 # } while( index++ < max_ldf_1_index );
981: 951 0000D276 L334:
982: 952 0000D276 L320:
983: 953 0000D276 0d effffff7c8 50 movl _index,r0
984: 954 0000D27D 6d effffff7c1 incl _index
985: 955 0000D283 1d 50 effffff7ba cmpl r0,_max_ldf_1_index
986: 956 0000D28A 81 03 13 fe7c jlss L321
987: 957 0000D28F L319:
988: 958 0000D28F # } /* end of subtest 6 */
989: 959 0000D28F 40 ret#2
990: 960 0000D290 .set L315,0x0
991: 961 0000D290 L317:
992: 962 0000D290 13 fe66 jbr L318
993: 963 0000D293 .data
994: 964 00000be8 * .text
995: 965 0000D293 00 .align 1
996: 966 0000D294 .globl _ldf_7
997: 967 0000D294 _ldf_7:
998: 968 0000D294 0000 .word L335
999: 969 0000D296 #
1000: 970 0000D296 #
1001: 971 0000D296 #
1002: 972 0000D296 # /************************************************************************
1003: 973 0000D296 # *
1004: 974 0000D296 # * SUBTEST 7 - pipelined entry test (ldf)
1005: 975 0000D296 # *
1006: 976 0000D296 # ************************************************************************/
1007: 977 0000D296 # ldf_7()
1008: 978 0000D296 # {
1009: 979 0000D296 13 0117 jbr L337
1010: 980 0000D299 L338:
1011: 981 0000D299 # force_loop = FALSE;
1012: 982 0000D299 4d effffff7a5 clrl _force_loop
1013: 983 0000D29F # subtest = 7;
1014: 984 0000D29F 0d 07 effffff79e movl $7,_subtest
1015: 985 0000D2A6 # for( index = 0; index < max_ldf_1_index; index++ ) {
1016: 986 0000D2A6 4d effffff798 clrl _index
1017: 987 0000D2AC L341:
1018: 988 0000D2AC 1d effffff792 effffff78d cmpl _index,_max_ldf_1_index
1019: 989 0000D2B7 91 03 13 00f3 jgeq L340
1020: 990 0000D2BC # sgl_ld_acc = ldf_1_data[index].ld; /* get value to load */
1021: 991 0000D2BC 0d effffff782 50 movl _index,r0
1022: 992 0000D2C3 48 03 50 50 shll $3,r0,r0
1023: 993 0000D2C7 0d e000000000 effffff772 movl _ldf_1_data(r0),_sgl_ld_acc
1024: 994 0000D2D2 # sgl_expected = ldf_1_data[index].exp; /* get expected result */
1025: 995 0000D2D2 0d effffff76c 50 movl _index,r0
1026: 996 0000D2D9 48 03 50 50 shll $3,r0,r0
1027: 997 0000D2DD 0d e000000004 effffff75c movl _ldf_1_data+4(r0),_sgl_expected
1028: 998 0000D2E8 # /*
1029: 999 0000D2E8 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1030: 1000 0000D2E8 # * The force loop flag is set after the first error.
1031: 1001 0000D2E8 # */
1032: 1002 0000D2E8 # asm("_ldf_7_lp1:");
1033: 1003 0000D2E8 _ldf_7_lp1:
1034: 1004 0000D2E8 # asm("movl $0,r0"); /* clear r0 */
1035: 1005 0000D2E8 0d 00 50 movl $0,r0
1036: 1006 0000D2EB # asm("ldf r0"); /* load the Acc. with 0.0 */
1037: 1007 0000D2EB 06 50 ldf r0
1038: 1008 0000D2ED # asm("ldf _sgl_ld_acc"); /* load the value */
1039: 1009 0000D2ED 06 effffff751 ldf _sgl_ld_acc
1040: 1010 0000D2F3 # asm("nop");
1041: 1011 0000D2F3 10 nop
1042: 1012 0000D2F4 # asm("stf _sgl_st_acc"); /* store the result */
1043: 1013 0000D2F4 26 effffff74a stf _sgl_st_acc
1044: 1014 0000D2FA # if( force_loop )
1045: 1015 0000D2FA 5d effffff744 tstl _force_loop
1046: 1016 0000D300 31 02 jeql L342
1047: 1017 0000D302 # asm("brb _ldf_7_lp1");; /* loop on the error */
1048: 1018 0000D302 11 e4 brb _ldf_7_lp1
1049: 1019 0000D304 L342:
1050: 1020 0000D304 # /*
1051: 1021 0000D304 # * end error loop - test the results
1052: 1022 0000D304 # */
1053: 1023 0000D304 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1054: 1024 0000D304 1d effffff73a effffff735 cmpl _sgl_st_acc,_sgl_expected
1055: 1025 0000D30F 21 03 13 0092 jeql L343
1056: 1026 0000D314 # errcnt++; /* bump the error count */
1057: 1027 0000D314 6d effffff72a incl _errcnt
1058: 1028 0000D31A # if( prt_error ) {
1059: 1029 0000D31A 5d effffff724 tstl _prt_error
1060: 1030 0000D320 31 61 jeql L344
1061: 1031 0000D322 # print_ldf_er_hdr();
1062: 1032 0000D322 fe 04 ef000001a5 callf $4,_print_ldf_er_hdr
1063: 1033 0000D329 # writes(" (Piped Entry) - BAD FINAL ACC\n");
1064: 1034 0000D329 .data 1
1065: 1035 00000db0 * L345:
1066: 1036 00000db0 * 2028506970656420456E74727 .ascii " (Piped Entry) - BAD FINAL ACC\12\0"
1067: 929202D204241442046494E41
1068: 4C204143430A00
1069: 1037 00000dd0 * .text
1070: 1038 0000D329 dd 8f00000db0 pushl $L345
1071: 1039 0000D32F fe 08 effffff70e callf $8,_writes
1072: 1040 0000D336 # print_ldf_data();
1073: 1041 0000D336 fe 04 ef00000201 callf $4,_print_ldf_data
1074: 1042 0000D33D # writes(", data index = ");
1075: 1043 0000D33D .data 1
1076: 1044 00000dd0 * L346:
1077: 1045 00000dd0 * 2C20206461746120696E64657 .ascii ", data index = \0"
1078: 8203D2000
1079: 1046 00000de1 * .text
1080: 1047 0000D33D dd 8f00000dd0 pushl $L346
1081: 1048 0000D343 fe 08 effffff6fa callf $8,_writes
1082: 1049 0000D34A # writed( index );
1083: 1050 0000D34A dd effffff6f4 pushl _index
1084: 1051 0000D350 fe 08 effffff6ed callf $8,_writed
1085: 1052 0000D357 # writec('\n');
1086: 1053 0000D357 dd 0a pushl $10
1087: 1054 0000D359 fe 08 effffff6e4 callf $8,_writec
1088: 1055 0000D360 # writes(" Acc expected = ");
1089: 1056 0000D360 .data 1
1090: 1057 00000de1 * L347:
1091: 1058 00000de1 * 2020202020202020202020202 .ascii " Acc expected = \0"
1092: 0202020202020202020204163
1093: 63206578706563746564203D2
1094: 000
1095: 1059 00000e08 * .text
1096: 1060 0000D360 dd 8f00000de1 pushl $L347
1097: 1061 0000D366 fe 08 effffff6d7 callf $8,_writes
1098: 1062 0000D36D # write32h( sgl_expected );
1099: 1063 0000D36D dd effffff6d1 pushl _sgl_expected
1100: 1064 0000D373 fe 08 effffff6ca callf $8,_write32h
1101: 1065 0000D37A # writec('\n');
1102: 1066 0000D37A dd 0a pushl $10
1103: 1067 0000D37C fe 08 effffff6c1 callf $8,_writec
1104: 1068 0000D383 # }
1105: 1069 0000D383 # if( halt_flg )
1106: 1070 0000D383 L344:
1107: 1071 0000D383 5d effffff6bb tstl _halt_flg
1108: 1072 0000D389 31 09 jeql L348
1109: 1073 0000D38B # ldf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1110: 1074 0000D38B dd 01 pushl $1
1111: 1075 0000D38D fe 08 ef000001e6 callf $8,_ldf_er_halt
1112: 1076 0000D394 # if( loop_on_err ) {
1113: 1077 0000D394 L348:
1114: 1078 0000D394 5d effffff6aa tstl _loop_on_err
1115: 1079 0000D39A 31 0a jeql L349
1116: 1080 0000D39C # force_loop = TRUE; /* set the force loop flag */
1117: 1081 0000D39C 0d 01 effffff6a1 movl $1,_force_loop
1118: 1082 0000D3A3 # asm("brw _ldf_7_lp1");; /* and loop on the error */
1119: 1083 0000D3A3 13 ff42 brw _ldf_7_lp1
1120: 1084 0000D3A6 # } /* end of loop on error */
1121: 1085 0000D3A6 # } /* end of compare error */
1122: 1086 0000D3A6 L349:
1123: 1087 0000D3A6 # } /* end of WHILE loop */
1124: 1088 0000D3A6 L343:
1125: 1089 0000D3A6 L339:
1126: 1090 0000D3A6 6d effffff698 incl _index
1127: 1091 0000D3AC 13 fefd jbr L341
1128: 1092 0000D3AF L340:
1129: 1093 0000D3AF # } /* end of subtest 7 */
1130: 1094 0000D3AF 40 ret#2
1131: 1095 0000D3B0 .set L335,0x0
1132: 1096 0000D3B0 L337:
1133: 1097 0000D3B0 13 fee6 jbr L338
1134: 1098 0000D3B3 .data
1135: 1099 00000be8 * .text
1136: 1100 0000D3B3 00 .align 1
1137: 1101 0000D3B4 .globl _ldf_8
1138: 1102 0000D3B4 _ldf_8:
1139: 1103 0000D3B4 0000 .word L351
1140: 1104 0000D3B6 #
1141: 1105 0000D3B6 #
1142: 1106 0000D3B6 #
1143: 1107 0000D3B6 # /************************************************************************
1144: 1108 0000D3B6 # *
1145: 1109 0000D3B6 # * SUBTEST 8 - pipelined entry test (stf)
1146: 1110 0000D3B6 # *
1147: 1111 0000D3B6 # ************************************************************************/
1148: 1112 0000D3B6 # ldf_8()
1149: 1113 0000D3B6 # {
1150: 1114 0000D3B6 13 0111 jbr L353
1151: 1115 0000D3B9 L354:
1152: 1116 0000D3B9 # force_loop = FALSE;
1153: 1117 0000D3B9 4d effffff685 clrl _force_loop
1154: 1118 0000D3BF # subtest = 8;
1155: 1119 0000D3BF 0d 08 effffff67e movl $8,_subtest
1156: 1120 0000D3C6 # for( index = 0; index < max_ldf_1_index; index++ ) {
1157: 1121 0000D3C6 4d effffff678 clrl _index
1158: 1122 0000D3CC L357:
1159: 1123 0000D3CC 1d effffff672 effffff66d cmpl _index,_max_ldf_1_index
1160: 1124 0000D3D7 91 03 13 00ed jgeq L356
1161: 1125 0000D3DC # sgl_ld_acc = ldf_1_data[index].ld; /* get value to load */
1162: 1126 0000D3DC 0d effffff662 50 movl _index,r0
1163: 1127 0000D3E3 48 03 50 50 shll $3,r0,r0
1164: 1128 0000D3E7 0d e000000000 effffff652 movl _ldf_1_data(r0),_sgl_ld_acc
1165: 1129 0000D3F2 # sgl_expected = ldf_1_data[index].exp; /* get expected result */
1166: 1130 0000D3F2 0d effffff64c 50 movl _index,r0
1167: 1131 0000D3F9 48 03 50 50 shll $3,r0,r0
1168: 1132 0000D3FD 0d e000000004 effffff63c movl _ldf_1_data+4(r0),_sgl_expected
1169: 1133 0000D408 # /*
1170: 1134 0000D408 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1171: 1135 0000D408 # * The force loop flag is set after the first error.
1172: 1136 0000D408 # */
1173: 1137 0000D408 # asm("_ldf_8_lp1:");
1174: 1138 0000D408 _ldf_8_lp1:
1175: 1139 0000D408 # asm("ldf _sgl_ld_acc"); /* load the value */
1176: 1140 0000D408 06 effffff636 ldf _sgl_ld_acc
1177: 1141 0000D40E # asm("stf _sgl_st_acc"); /* store the result */
1178: 1142 0000D40E 26 effffff630 stf _sgl_st_acc
1179: 1143 0000D414 # if( force_loop )
1180: 1144 0000D414 5d effffff62a tstl _force_loop
1181: 1145 0000D41A 31 02 jeql L358
1182: 1146 0000D41C # asm("brb _ldf_8_lp1");; /* loop on the error */
1183: 1147 0000D41C 11 ea brb _ldf_8_lp1
1184: 1148 0000D41E L358:
1185: 1149 0000D41E # /*
1186: 1150 0000D41E # * end error loop - test the results
1187: 1151 0000D41E # */
1188: 1152 0000D41E # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1189: 1153 0000D41E 1d effffff620 effffff61b cmpl _sgl_st_acc,_sgl_expected
1190: 1154 0000D429 21 03 13 0092 jeql L359
1191: 1155 0000D42E # errcnt++; /* bump the error count */
1192: 1156 0000D42E 6d effffff610 incl _errcnt
1193: 1157 0000D434 # if( prt_error ) {
1194: 1158 0000D434 5d effffff60a tstl _prt_error
1195: 1159 0000D43A 31 61 jeql L360
1196: 1160 0000D43C # print_ldf_er_hdr();
1197: 1161 0000D43C fe 04 ef0000008b callf $4,_print_ldf_er_hdr
1198: 1162 0000D443 # writes(" (Piped Exit) - BAD FINAL ACC\n");
1199: 1163 0000D443 .data 1
1200: 1164 00000e08 * L361:
1201: 1165 00000e08 * 2028506970656420457869742 .ascii " (Piped Exit) - BAD FINAL ACC\12\0"
1202: 9202D204241442046494E414C
1203: 204143430A00
1204: 1166 00000e27 * .text
1205: 1167 0000D443 dd 8f00000e08 pushl $L361
1206: 1168 0000D449 fe 08 effffff5f4 callf $8,_writes
1207: 1169 0000D450 # print_ldf_data();
1208: 1170 0000D450 fe 04 ef000000e7 callf $4,_print_ldf_data
1209: 1171 0000D457 # writes(", data index = ");
1210: 1172 0000D457 .data 1
1211: 1173 00000e27 * L362:
1212: 1174 00000e27 * 2C20206461746120696E64657 .ascii ", data index = \0"
1213: 8203D2000
1214: 1175 00000e38 * .text
1215: 1176 0000D457 dd 8f00000e27 pushl $L362
1216: 1177 0000D45D fe 08 effffff5e0 callf $8,_writes
1217: 1178 0000D464 # writed( index );
1218: 1179 0000D464 dd effffff5da pushl _index
1219: 1180 0000D46A fe 08 effffff5d3 callf $8,_writed
1220: 1181 0000D471 # writec('\n');
1221: 1182 0000D471 dd 0a pushl $10
1222: 1183 0000D473 fe 08 effffff5ca callf $8,_writec
1223: 1184 0000D47A # writes(" Acc expected = ");
1224: 1185 0000D47A .data 1
1225: 1186 00000e38 * L363:
1226: 1187 00000e38 * 2020202020202020202020202 .ascii " Acc expected = \0"
1227: 0202020202020202020204163
1228: 63206578706563746564203D2
1229: 000
1230: 1188 00000e5f * .text
1231: 1189 0000D47A dd 8f00000e38 pushl $L363
1232: 1190 0000D480 fe 08 effffff5bd callf $8,_writes
1233: 1191 0000D487 # write32h( sgl_expected );
1234: 1192 0000D487 dd effffff5b7 pushl _sgl_expected
1235: 1193 0000D48D fe 08 effffff5b0 callf $8,_write32h
1236: 1194 0000D494 # writec('\n');
1237: 1195 0000D494 dd 0a pushl $10
1238: 1196 0000D496 fe 08 effffff5a7 callf $8,_writec
1239: 1197 0000D49D # }
1240: 1198 0000D49D # if( halt_flg )
1241: 1199 0000D49D L360:
1242: 1200 0000D49D 5d effffff5a1 tstl _halt_flg
1243: 1201 0000D4A3 31 09 jeql L364
1244: 1202 0000D4A5 # ldf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1245: 1203 0000D4A5 dd 01 pushl $1
1246: 1204 0000D4A7 fe 08 ef000000cc callf $8,_ldf_er_halt
1247: 1205 0000D4AE # if( loop_on_err ) {
1248: 1206 0000D4AE L364:
1249: 1207 0000D4AE 5d effffff590 tstl _loop_on_err
1250: 1208 0000D4B4 31 0a jeql L365
1251: 1209 0000D4B6 # force_loop = TRUE; /* set the force loop flag */
1252: 1210 0000D4B6 0d 01 effffff587 movl $1,_force_loop
1253: 1211 0000D4BD # asm("brw _ldf_8_lp1");; /* and loop on the error */
1254: 1212 0000D4BD 13 ff48 brw _ldf_8_lp1
1255: 1213 0000D4C0 # } /* end of loop on error */
1256: 1214 0000D4C0 # } /* end of compare error */
1257: 1215 0000D4C0 L365:
1258: 1216 0000D4C0 # } /* end of WHILE loop */
1259: 1217 0000D4C0 L359:
1260: 1218 0000D4C0 L355:
1261: 1219 0000D4C0 6d effffff57e incl _index
1262: 1220 0000D4C6 13 ff03 jbr L357
1263: 1221 0000D4C9 L356:
1264: 1222 0000D4C9 # } /* end of subtest 8 */
1265: 1223 0000D4C9 40 ret#2
1266: 1224 0000D4CA .set L351,0x0
1267: 1225 0000D4CA L353:
1268: 1226 0000D4CA 13 feec jbr L354
1269: 1227 0000D4CD .data
1270: 1228 00000be8 * .text
1271: 1229 0000D4CD 00 .align 1
1272: 1230 0000D4CE .globl _print_ldf_er_hdr
1273: 1231 0000D4CE _print_ldf_er_hdr:
1274: 1232 0000D4CE 0000 .word L366
1275: 1233 0000D4D0 #
1276: 1234 0000D4D0 #
1277: 1235 0000D4D0 #
1278: 1236 0000D4D0 # /**************************************************************************
1279: 1237 0000D4D0 # *
1280: 1238 0000D4D0 # * PRINT THE ERROR MESSAGE HEADER
1281: 1239 0000D4D0 # *
1282: 1240 0000D4D0 # **************************************************************************/
1283: 1241 0000D4D0 # print_ldf_er_hdr()
1284: 1242 0000D4D0 # {
1285: 1243 0000D4D0 11 69 jbr L368
1286: 1244 0000D4D2 L369:
1287: 1245 0000D4D2 # writes(" \n"); /* start a new print line */
1288: 1246 0000D4D2 .data 1
1289: 1247 00000e5f * L370:
1290: 1248 00000e5f * 200A00 .ascii " \12\0"
1291: 1249 00000e62 * .text
1292: 1250 0000D4D2 dd 8f00000e5f pushl $L370
1293: 1251 0000D4D8 fe 08 effffff565 callf $8,_writes
1294: 1252 0000D4DF # writes("cycle: "); /* print the cycle count */
1295: 1253 0000D4DF .data 1
1296: 1254 00000e62 * L371:
1297: 1255 00000e62 * 6379636C653A2000 .ascii "cycle: \0"
1298: 1256 00000e6a * .text
1299: 1257 0000D4DF dd 8f00000e62 pushl $L371
1300: 1258 0000D4E5 fe 08 effffff558 callf $8,_writes
1301: 1259 0000D4EC # writed( cycle );
1302: 1260 0000D4EC dd effffff552 pushl _cycle
1303: 1261 0000D4F2 fe 08 effffff54b callf $8,_writed
1304: 1262 0000D4F9 # writes(" LDF_STF "); /* print test name header */
1305: 1263 0000D4F9 .data 1
1306: 1264 00000e6a * L372:
1307: 1265 00000e6a * 20204C44465F5354462000 .ascii " LDF_STF \0"
1308: 1266 00000e75 * .text
1309: 1267 0000D4F9 dd 8f00000e6a pushl $L372
1310: 1268 0000D4FF fe 08 effffff53e callf $8,_writes
1311: 1269 0000D506 # writes("test "); /* print the test number */
1312: 1270 0000D506 .data 1
1313: 1271 00000e75 * L373:
1314: 1272 00000e75 * 746573742000 .ascii "test \0"
1315: 1273 00000e7b * .text
1316: 1274 0000D506 dd 8f00000e75 pushl $L373
1317: 1275 0000D50C fe 08 effffff531 callf $8,_writes
1318: 1276 0000D513 # writed( test_no );
1319: 1277 0000D513 dd effffff52b pushl _test_no
1320: 1278 0000D519 fe 08 effffff524 callf $8,_writed
1321: 1279 0000D520 # writes(", subtest "); /* print subtest number */
1322: 1280 0000D520 .data 1
1323: 1281 00000e7b * L374:
1324: 1282 00000e7b * 2C20737562746573742000 .ascii ", subtest \0"
1325: 1283 00000e86 * .text
1326: 1284 0000D520 dd 8f00000e7b pushl $L374
1327: 1285 0000D526 fe 08 effffff517 callf $8,_writes
1328: 1286 0000D52D # writed( subtest );
1329: 1287 0000D52D dd effffff511 pushl _subtest
1330: 1288 0000D533 fe 08 effffff50a callf $8,_writed
1331: 1289 0000D53A # }
1332: 1290 0000D53A 40 ret#2
1333: 1291 0000D53B .set L366,0x0
1334: 1292 0000D53B L368:
1335: 1293 0000D53B 11 95 jbr L369
1336: 1294 0000D53D .data
1337: 1295 00000be8 * .text
1338: 1296 0000D53D 00 .align 1
1339: 1297 0000D53E .globl _print_ldf_data
1340: 1298 0000D53E _print_ldf_data:
1341: 1299 0000D53E 0000 .word L375
1342: 1300 0000D540 #
1343: 1301 0000D540 #
1344: 1302 0000D540 #
1345: 1303 0000D540 # /**************************************************************************
1346: 1304 0000D540 # *
1347: 1305 0000D540 # * PRINT THE DATA AND STORE RESULTS
1348: 1306 0000D540 # *
1349: 1307 0000D540 # * Acc loaded = xxxxxxxx, Acc stored = xxxxxxxx, data index = xx
1350: 1308 0000D540 # * Acc expected = xxxxxxxx
1351: 1309 0000D540 # **************************************************************************/
1352: 1310 0000D540 # print_ldf_data()
1353: 1311 0000D540 # {
1354: 1312 0000D540 11 35 jbr L377
1355: 1313 0000D542 L378:
1356: 1314 0000D542 # writes(" Acc loaded = ");
1357: 1315 0000D542 .data 1
1358: 1316 00000e86 * L379:
1359: 1317 00000e86 * 20416363206C6F61646564203 .ascii " Acc loaded = \0"
1360: D2000
1361: 1318 00000e95 * .text
1362: 1319 0000D542 dd 8f00000e86 pushl $L379
1363: 1320 0000D548 fe 08 effffff4f5 callf $8,_writes
1364: 1321 0000D54F # write32h( sgl_ld_acc );
1365: 1322 0000D54F dd effffff4ef pushl _sgl_ld_acc
1366: 1323 0000D555 fe 08 effffff4e8 callf $8,_write32h
1367: 1324 0000D55C # writes(", Acc stored = ");
1368: 1325 0000D55C .data 1
1369: 1326 00000e95 * L380:
1370: 1327 00000e95 * 2C20204163632073746F72656 .ascii ", Acc stored = \0"
1371: 4203D2000
1372: 1328 00000ea6 * .text
1373: 1329 0000D55C dd 8f00000e95 pushl $L380
1374: 1330 0000D562 fe 08 effffff4db callf $8,_writes
1375: 1331 0000D569 # write32h( sgl_st_acc );
1376: 1332 0000D569 dd effffff4d5 pushl _sgl_st_acc
1377: 1333 0000D56F fe 08 effffff4ce callf $8,_write32h
1378: 1334 0000D576 # }
1379: 1335 0000D576 40 ret#2
1380: 1336 0000D577 .set L375,0x0
1381: 1337 0000D577 L377:
1382: 1338 0000D577 11 c9 jbr L378
1383: 1339 0000D579 .data
1384: 1340 00000be8 * .text
1385: 1341 0000D579 00 .align 1
1386: 1342 0000D57A .globl _ldf_er_halt
1387: 1343 0000D57A _ldf_er_halt:
1388: 1344 0000D57A 0000 .word L381
1389: 1345 0000D57C #
1390: 1346 0000D57C #
1391: 1347 0000D57C #
1392: 1348 0000D57C # /**************************************************************************
1393: 1349 0000D57C # *
1394: 1350 0000D57C # * HALT ON ERROR ROUTINE
1395: 1351 0000D57C # *
1396: 1352 0000D57C # **************************************************************************/
1397: 1353 0000D57C # ldf_er_halt( halt_code )
1398: 1354 0000D57C # int halt_code;
1399: 1355 0000D57C # {
1400: 1356 0000D57C 13 00a8 jbr L383
1401: 1357 0000D57F L384:
1402: 1358 0000D57F # sgl_dummy1 = halt_code; /* get the error type */
1403: 1359 0000D57F 0d ad04 effffff4bd movl 4(fp),_sgl_dummy1
1404: 1360 0000D587 # asm("movl _test_no,r0"); /* r0 = test number */
1405: 1361 0000D587 0d effffff4b7 50 movl _test_no,r0
1406: 1362 0000D58E # asm("movl _subtest,r1"); /* r1 = subtest number */
1407: 1363 0000D58E 0d effffff4b0 51 movl _subtest,r1
1408: 1364 0000D595 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1409: 1365 0000D595 0d effffff4a9 52 movl _sgl_dummy1,r2
1410: 1366 0000D59C # asm("movl _cycle,r3"); /* r3 = cycle count */
1411: 1367 0000D59C 0d effffff4a2 53 movl _cycle,r3
1412: 1368 0000D5A3 # asm("movl _sgl_ld_acc,r4"); /* r4 = data loaded */
1413: 1369 0000D5A3 0d effffff49b 54 movl _sgl_ld_acc,r4
1414: 1370 0000D5AA # asm("movl _sgl_st_acc,r5"); /* r5 = data stored */
1415: 1371 0000D5AA 0d effffff494 55 movl _sgl_st_acc,r5
1416: 1372 0000D5B1 # if( halt_code == BAD_ACC_HLT ) {
1417: 1373 0000D5B1 1d ad04 01 cmpl 4(fp),$1
1418: 1374 0000D5B5 21 10 jneq L385
1419: 1375 0000D5B7 # asm("movl _sgl_expected,r6"); /* r6 = data expected */
1420: 1376 0000D5B7 0d effffff487 56 movl _sgl_expected,r6
1421: 1377 0000D5BE # asm("movl _index,r7"); /* r7 = data index */
1422: 1378 0000D5BE 0d effffff480 57 movl _index,r7
1423: 1379 0000D5C5 # } else
1424: 1380 0000D5C5 11 5e jbr L386
1425: 1381 0000D5C7 L385:
1426: 1382 0000D5C7 # if( halt_code == BAD_REG_HLT ) {
1427: 1383 0000D5C7 1d ad04 02 cmpl 4(fp),$2
1428: 1384 0000D5CB 21 3d jneq L387
1429: 1385 0000D5CD # sgl_dummy1 = load_regs[index2];
1430: 1386 0000D5CD 0d effffff471 50 movl _index2,r0
1431: 1387 0000D5D4 0d 40effffff469 movl _load_regs[r0],_sgl_dummy1
1432: effffff464
1433: 1388 0000D5E0 # sgl_dummy2 = store_regs[index2];
1434: 1389 0000D5E0 0d effffff45e 50 movl _index2,r0
1435: 1390 0000D5E7 0d 40effffff456 movl _store_regs[r0],_sgl_dummy2
1436: effffff451
1437: 1391 0000D5F3 # asm("movl _index2,r6"); /* r6 = bad register # */
1438: 1392 0000D5F3 0d effffff44b 56 movl _index2,r6
1439: 1393 0000D5FA # asm("movl _sgl_dummy2,r7"); /* r7 = final reg value */
1440: 1394 0000D5FA 0d effffff444 57 movl _sgl_dummy2,r7
1441: 1395 0000D601 # asm("movl _sgl_dummy1,r8"); /* r8 = expected value */
1442: 1396 0000D601 0d effffff43d 58 movl _sgl_dummy1,r8
1443: 1397 0000D608 # } else
1444: 1398 0000D608 11 1b jbr L388
1445: 1399 0000D60A L387:
1446: 1400 0000D60A # if( halt_code == BAD_PSL_HLT ) {
1447: 1401 0000D60A 1d ad04 03 cmpl 4(fp),$3
1448: 1402 0000D60E 21 15 jneq L389
1449: 1403 0000D610 # asm("movl _init_psl,r6"); /* r6 = initial PSL */
1450: 1404 0000D610 0d effffff42e 56 movl _init_psl,r6
1451: 1405 0000D617 # asm("movl _psl_val,r7"); /* r7 = final PSL */
1452: 1406 0000D617 0d effffff427 57 movl _psl_val,r7
1453: 1407 0000D61E # asm("movl _exp_psl,r8"); /* r8 = expected PSL */
1454: 1408 0000D61E 0d effffff420 58 movl _exp_psl,r8
1455: 1409 0000D625 # };
1456: 1410 0000D625 L389:
1457: 1411 0000D625 L388:
1458: 1412 0000D625 L386:
1459: 1413 0000D625 # asm("halt"); /* HALT ... */
1460: 1414 0000D625 00 halt
1461: 1415 0000D626 # }
1462: 1416 0000D626 40 ret#2
1463: 1417 0000D627 .set L381,0x0
1464: 1418 0000D627 L383:
1465: 1419 0000D627 13 ff55 jbr L384
1466: 1420 0000D62A .data
1467: 1420 0001A06E .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.