|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000c20 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _ldd
6: 6 00000000 _ldd:
7: 7 00015C40 0000 .word L215
8: 8 00015C42 #
9: 9 00015C42 # #include "fpp_defs.h"
10: 10 00015C42 #
11: 11 00015C42 #
12: 12 00015C42 # /*****************************************************************************
13: 13 00015C42 # *
14: 14 00015C42 # * LDD_STD - DOUBLE PRECISION FLOATING POINT LOAD_STORE TEST
15: 15 00015C42 # *
16: 16 00015C42 # *****************************************************************************/
17: 17 00015C42 # ldd()
18: 18 00015C42 # {
19: 19 00015C42 11 4f jbr L217
20: 20 00015C44 L218:
21: 21 00015C44 # asm(".globl _ldd_t");
22: 22 00015C44 .globl _ldd_t
23: 23 00015C44 # asm("_ldd_t:"); /* entry address */
24: 24 00015C44 _ldd_t:
25: 25 00015C44 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26: 26 00015C44 1d effffffff6 01 cmpl _cycle,$1
27: 27 00015C4B 21 15 jneq L219
28: 28 00015C4D 5d efffffffed tstl _prt_hdrs
29: 29 00015C53 31 0d jeql L219
30: 30 00015C55 # writes("\n LDD_STD");
31: 31 00015C55 .data 1
32: 32 00000c20 * L221:
33: 33 00000c20 * 0A204C44445F53544400 .ascii "\12 LDD_STD\0"
34: 34 00000c2a * .text
35: 35 00015C55 dd 8f00000c20 pushl $L221
36: 36 00015C5B fe 08 efffffffde callf $8,_writes
37: 37 00015C62 # ldd_1(); /* load through a register */
38: 38 00015C62 L219:
39: 39 00015C62 fe 04 ef0000002d callf $4,_ldd_1
40: 40 00015C69 # ldd_2(); /* load through the cache */
41: 41 00015C69 fe 04 ef000001ee callf $4,_ldd_2
42: 42 00015C70 # ldd_3(); /* register stability ldd */
43: 43 00015C70 fe 04 ef00000385 callf $4,_ldd_3
44: 44 00015C77 # ldd_4(); /* register stability std */
45: 45 00015C77 fe 04 ef0000054e callf $4,_ldd_4
46: 46 00015C7E # ldd_5(); /* PSL stability test ldd */
47: 47 00015C7E fe 04 ef000006e5 callf $4,_ldd_5
48: 48 00015C85 # ldd_6(); /* PSL stability test std */
49: 49 00015C85 fe 04 ef0000087e callf $4,_ldd_6
50: 50 00015C8C # asm("jmp *return"); /* return to the test monitor */
51: 51 00015C8C 71 ffffffffae jmp *return
52: 52 00015C92 # }
53: 53 00015C92 40 ret#2
54: 54 00015C93 .set L215,0x0
55: 55 00015C93 L217:
56: 56 00015C93 11 af jbr L218
57: 57 00015C95 .data
58: 58 00000c20 * .text
59: 59 00015C95 00 .align 1
60: 60 00015C96 .globl _ldd_1
61: 61 00015C96 _ldd_1:
62: 62 00015C96 0000 .word L228
63: 63 00015C98 #
64: 64 00015C98 #
65: 65 00015C98 #
66: 66 00015C98 # /************************************************************************
67: 67 00015C98 # *
68: 68 00015C98 # * SUBTEST 1 - load through a register
69: 69 00015C98 # *
70: 70 00015C98 # ************************************************************************/
71: 71 00015C98 # ldd_1()
72: 72 00015C98 # {
73: 73 00015C98 13 01bf jbr L230
74: 74 00015C9B L231:
75: 75 00015C9B # force_loop = FALSE;
76: 76 00015C9B 4d efffffff9f clrl _force_loop
77: 77 00015CA1 # subtest = 1;
78: 78 00015CA1 0d 01 efffffff98 movl $1,_subtest
79: 79 00015CA8 # for( index = 0; index < max_ldd_1_index; index++ ) {
80: 80 00015CA8 4d efffffff92 clrl _index
81: 81 00015CAE L234:
82: 82 00015CAE 1d efffffff8c efffffff87 cmpl _index,_max_ldd_1_index
83: 83 00015CB9 91 03 13 019b jgeq L233
84: 84 00015CBE # dbl_ld_acc = ldd_1_data[index].ld; /* get the operand */
85: 85 00015CBE 48 04 efffffff7b 50 shll $4,_index,r0
86: 86 00015CC6 0c 8f00000000 50 addl2 $_ldd_1_data,r0
87: 87 00015CCD 0d a004 efffffff6f movl 4(r0),_dbl_ld_acc+4
88: 88 00015CD5 0d 60 efffffff64 movl (r0),_dbl_ld_acc
89: 89 00015CDC # if( dbl_ld_acc.m & 0x7f800000 )
90: 90 00015CDC 3d 8f7f800000 efffffff59 bitl $2139095040,_dbl_ld_acc
91: 91 00015CE7 31 18 jeql L235
92: 92 00015CE9 # dbl_expected = dbl_ld_acc; /* expected = loaded */
93: 93 00015CE9 0d efffffff55 efffffff50 movl _dbl_ld_acc+4,_dbl_expected+4
94: 94 00015CF4 0d efffffff46 efffffff41 movl _dbl_ld_acc,_dbl_expected
95: 95 00015CFF # else {
96: 96 00015CFF 11 0c jbr L236
97: 97 00015D01 L235:
98: 98 00015D01 # dbl_expected.m = 0; /* expect a '0' */
99: 99 00015D01 4d efffffff39 clrl _dbl_expected
100: 100 00015D07 # dbl_expected.l = 0;
101: 101 00015D07 4d efffffff37 clrl _dbl_expected+4
102: 102 00015D0D # }
103: 103 00015D0D L236:
104: 104 00015D0D # sgl_value_1 = dbl_ld_acc.m;
105: 105 00015D0D 0d efffffff2d efffffff28 movl _dbl_ld_acc,_sgl_value_1
106: 106 00015D18 # sgl_value_2 = dbl_ld_acc.l;
107: 107 00015D18 0d efffffff26 efffffff1d movl _dbl_ld_acc+4,_sgl_value_2
108: 108 00015D23 # /*
109: 109 00015D23 # * If LOOP ON ERROR is set, this is the loop for this subtest.
110: 110 00015D23 # * The force loop flag is set after the first error.
111: 111 00015D23 # */
112: 112 00015D23 # asm("_ldd_1_lp1:");
113: 113 00015D23 _ldd_1_lp1:
114: 114 00015D23 # asm("movl _sgl_value_1,r4"); /* move the operand to r4/r5 */
115: 115 00015D23 0d efffffff17 54 movl _sgl_value_1,r4
116: 116 00015D2A # asm("movl _sgl_value_2,r5");
117: 117 00015D2A 0d efffffff10 55 movl _sgl_value_2,r5
118: 118 00015D31 # asm("ldd r4"); /* load the value */
119: 119 00015D31 07 54 ldd r4
120: 120 00015D33 # asm("nop");
121: 121 00015D33 10 nop
122: 122 00015D34 # asm("std r8"); /* store the result in R8 */
123: 123 00015D34 27 58 std r8
124: 124 00015D36 # if( force_loop )
125: 125 00015D36 5d efffffff04 tstl _force_loop
126: 126 00015D3C 31 02 jeql L237
127: 127 00015D3E # asm("brb _ldd_1_lp1");; /* loop on the error */
128: 128 00015D3E 11 e3 brb _ldd_1_lp1
129: 129 00015D40 L237:
130: 130 00015D40 # /*
131: 131 00015D40 # * end error loop - test the results
132: 132 00015D40 # */
133: 133 00015D40 # asm("movl r8,_dbl_st_acc"); /* save the stored data */
134: 134 00015D40 0d 58 effffffef9 movl r8,_dbl_st_acc
135: 135 00015D47 # asm("movl r9,_dbl_st_acc+4");
136: 136 00015D47 0d 59 effffffef6 movl r9,_dbl_st_acc+4
137: 137 00015D4E # if( ( dbl_st_acc.m != dbl_expected.m ) || /* COMPARE the */
138: 138 00015D4E # ( dbl_st_acc.l != dbl_expected.l ) ) { /* values */
139: 139 00015D4E 1d effffffeec effffffee7 cmpl _dbl_st_acc,_dbl_expected
140: 140 00015D59 21 10 jneq L9999
141: 141 00015D5B 1d effffffee3 effffffede cmpl _dbl_st_acc+4,_dbl_expected+4
142: 142 00015D66 21 03 13 00e5 jeql L238
143: 143 00015D6B L9999:
144: 144 00015D6B # errcnt++; /* bump the error count */
145: 145 00015D6B 6d effffffecf incl _errcnt
146: 146 00015D71 # if( prt_error ) {
147: 147 00015D71 5d effffffec9 tstl _prt_error
148: 148 00015D77 21 03 13 00b1 jeql L239
149: 149 00015D7C # writes(" \n"); /* start a new print line */
150: 150 00015D7C .data 1
151: 151 00000c2a * L240:
152: 152 00000c2a * 200A00 .ascii " \12\0"
153: 153 00000c2d * .text
154: 154 00015D7C dd 8f00000c2a pushl $L240
155: 155 00015D82 fe 08 effffffeb7 callf $8,_writes
156: 156 00015D89 # writes("cycle: ");
157: 157 00015D89 .data 1
158: 158 00000c2d * L241:
159: 159 00000c2d * 6379636C653A2000 .ascii "cycle: \0"
160: 160 00000c35 * .text
161: 161 00015D89 dd 8f00000c2d pushl $L241
162: 162 00015D8F fe 08 effffffeaa callf $8,_writes
163: 163 00015D96 # writed( cycle );
164: 164 00015D96 dd effffffea4 pushl _cycle
165: 165 00015D9C fe 08 effffffe9d callf $8,_writed
166: 166 00015DA3 # writes(" LDD_STD test ");
167: 167 00015DA3 .data 1
168: 168 00000c35 * L243:
169: 169 00000c35 * 20204C44445F5354442074657 .ascii " LDD_STD test \0"
170: 3742000
171: 170 00000c45 * .text
172: 171 00015DA3 dd 8f00000c35 pushl $L243
173: 172 00015DA9 fe 08 effffffe90 callf $8,_writes
174: 173 00015DB0 # writed( test_no );
175: 174 00015DB0 dd effffffe8a pushl _test_no
176: 175 00015DB6 fe 08 effffffe83 callf $8,_writed
177: 176 00015DBD # writes(", subtest 1 (Reg. Data) - BAD FINAL ACC\n");
178: 177 00015DBD .data 1
179: 178 00000c45 * L244:
180: 179 00000c45 * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - BAD FINAL ACC\12\0"
181: 85265672E204461746129202D
182: 204241442046494E414C20414
183: 3430A00
184: 180 00000c6e * .text
185: 181 00015DBD dd 8f00000c45 pushl $L244
186: 182 00015DC3 fe 08 effffffe76 callf $8,_writes
187: 183 00015DCA # print_ldd_data();
188: 184 00015DCA fe 04 ef0000091d callf $4,_print_ldd_data
189: 185 00015DD1 # writes(", index = ");
190: 186 00015DD1 .data 1
191: 187 00000c6e * L246:
192: 188 00000c6e * 2C20696E646578203D2000 .ascii ", index = \0"
193: 189 00000c79 * .text
194: 190 00015DD1 dd 8f00000c6e pushl $L246
195: 191 00015DD7 fe 08 effffffe62 callf $8,_writes
196: 192 00015DDE # writed( index );
197: 193 00015DDE dd effffffe5c pushl _index
198: 194 00015DE4 fe 08 effffffe55 callf $8,_writed
199: 195 00015DEB # writec('\n');
200: 196 00015DEB dd 0a pushl $10
201: 197 00015DED fe 08 effffffe4c callf $8,_writec
202: 198 00015DF4 # writes(" Acc expected = ");
203: 199 00015DF4 .data 1
204: 200 00000c79 * L248:
205: 201 00000c79 * 2020202020202020202020202 .ascii " Acc expected = \0"
206: 0202020202020202020202020
207: 2020202020202041636320657
208: 8706563746564203D2000
209: 202 00000ca9 * .text
210: 203 00015DF4 dd 8f00000c79 pushl $L248
211: 204 00015DFA fe 08 effffffe3f callf $8,_writes
212: 205 00015E01 # write32h( dbl_expected.m );
213: 206 00015E01 dd effffffe39 pushl _dbl_expected
214: 207 00015E07 fe 08 effffffe32 callf $8,_write32h
215: 208 00015E0E # writec(' ');
216: 209 00015E0E dd 20 pushl $32
217: 210 00015E10 fe 08 effffffe29 callf $8,_writec
218: 211 00015E17 # write32h(dbl_expected.l );
219: 212 00015E17 dd effffffe27 pushl _dbl_expected+4
220: 213 00015E1D fe 08 effffffe1c callf $8,_write32h
221: 214 00015E24 # writec('\n');
222: 215 00015E24 dd 0a pushl $10
223: 216 00015E26 fe 08 effffffe13 callf $8,_writec
224: 217 00015E2D # }
225: 218 00015E2D # if( halt_flg )
226: 219 00015E2D L239:
227: 220 00015E2D 5d effffffe0d tstl _halt_flg
228: 221 00015E33 31 09 jeql L250
229: 222 00015E35 # ldd_er_halt( BAD_ACC_HLT ); /* halt on the error */
230: 223 00015E35 dd 01 pushl $1
231: 224 00015E37 fe 08 ef00000918 callf $8,_ldd_er_halt
232: 225 00015E3E # if( loop_on_err ) {
233: 226 00015E3E L250:
234: 227 00015E3E 5d effffffdfc tstl _loop_on_err
235: 228 00015E44 31 0a jeql L252
236: 229 00015E46 # force_loop = TRUE; /* set the force loop flag */
237: 230 00015E46 0d 01 effffffdf3 movl $1,_force_loop
238: 231 00015E4D # asm("brw _ldd_1_lp1");; /* and loop on the error */
239: 232 00015E4D 13 fed3 brw _ldd_1_lp1
240: 233 00015E50 # } /* end of loop on error */
241: 234 00015E50 # } /* end of compare error */
242: 235 00015E50 L252:
243: 236 00015E50 # } /* end of WHILE loop */
244: 237 00015E50 L238:
245: 238 00015E50 L232:
246: 239 00015E50 6d effffffdea incl _index
247: 240 00015E56 13 fe55 jbr L234
248: 241 00015E59 L233:
249: 242 00015E59 # } /* end of subtest 1 */
250: 243 00015E59 40 ret#2
251: 244 00015E5A .set L228,0x0
252: 245 00015E5A L230:
253: 246 00015E5A 13 fe3e jbr L231
254: 247 00015E5D .data
255: 248 00000c20 * .text
256: 249 00015E5D 00 .align 1
257: 250 00015E5E .globl _ldd_2
258: 251 00015E5E _ldd_2:
259: 252 00015E5E 0000 .word L253
260: 253 00015E60 #
261: 254 00015E60 #
262: 255 00015E60 #
263: 256 00015E60 # /************************************************************************
264: 257 00015E60 # *
265: 258 00015E60 # * SUBTEST 2 - load through cache
266: 259 00015E60 # *
267: 260 00015E60 # ************************************************************************/
268: 261 00015E60 # ldd_2()
269: 262 00015E60 # {
270: 263 00015E60 13 0195 jbr L255
271: 264 00015E63 L256:
272: 265 00015E63 # force_loop = FALSE;
273: 266 00015E63 4d effffffdd7 clrl _force_loop
274: 267 00015E69 # subtest = 2;
275: 268 00015E69 0d 02 effffffdd0 movl $2,_subtest
276: 269 00015E70 # for( index = 0; index < max_ldd_1_index; index++ ) {
277: 270 00015E70 4d effffffdca clrl _index
278: 271 00015E76 L259:
279: 272 00015E76 1d effffffdc4 effffffdbf cmpl _index,_max_ldd_1_index
280: 273 00015E81 91 03 13 0171 jgeq L258
281: 274 00015E86 # dbl_ld_acc = ldd_1_data[index].ld; /* get the operand */
282: 275 00015E86 48 04 effffffdb3 50 shll $4,_index,r0
283: 276 00015E8E 0c 8f00000000 50 addl2 $_ldd_1_data,r0
284: 277 00015E95 0d a004 effffffda7 movl 4(r0),_dbl_ld_acc+4
285: 278 00015E9D 0d 60 effffffd9c movl (r0),_dbl_ld_acc
286: 279 00015EA4 # if( dbl_ld_acc.m & 0x7f800000 )
287: 280 00015EA4 3d 8f7f800000 effffffd91 bitl $2139095040,_dbl_ld_acc
288: 281 00015EAF 31 18 jeql L260
289: 282 00015EB1 # dbl_expected = dbl_ld_acc; /* expected = loaded */
290: 283 00015EB1 0d effffffd8d effffffd88 movl _dbl_ld_acc+4,_dbl_expected+4
291: 284 00015EBC 0d effffffd7e effffffd79 movl _dbl_ld_acc,_dbl_expected
292: 285 00015EC7 # else {
293: 286 00015EC7 11 0c jbr L261
294: 287 00015EC9 L260:
295: 288 00015EC9 # dbl_expected.m = 0; /* expect a '0' */
296: 289 00015EC9 4d effffffd71 clrl _dbl_expected
297: 290 00015ECF # dbl_expected.l = 0;
298: 291 00015ECF 4d effffffd6f clrl _dbl_expected+4
299: 292 00015ED5 # }
300: 293 00015ED5 L261:
301: 294 00015ED5 # /*
302: 295 00015ED5 # * If LOOP ON ERROR is set, this is the loop for this subtest.
303: 296 00015ED5 # * The force loop flag is set after the first error.
304: 297 00015ED5 # */
305: 298 00015ED5 # asm("_ldd_2_lp1:");
306: 299 00015ED5 _ldd_2_lp1:
307: 300 00015ED5 # asm("ldd _dbl_ld_acc"); /* load the value */
308: 301 00015ED5 07 effffffd65 ldd _dbl_ld_acc
309: 302 00015EDB # asm("nop");
310: 303 00015EDB 10 nop
311: 304 00015EDC # asm("std _dbl_st_acc"); /* store the result */
312: 305 00015EDC 27 effffffd5e std _dbl_st_acc
313: 306 00015EE2 # if( force_loop )
314: 307 00015EE2 5d effffffd58 tstl _force_loop
315: 308 00015EE8 31 02 jeql L262
316: 309 00015EEA # asm("brb _ldd_2_lp1");; /* loop on the error */
317: 310 00015EEA 11 e9 brb _ldd_2_lp1
318: 311 00015EEC L262:
319: 312 00015EEC # /*
320: 313 00015EEC # * end error loop - test the results
321: 314 00015EEC # */
322: 315 00015EEC # if( ( dbl_st_acc.m != dbl_expected.m ) || /* COMPARE the */
323: 316 00015EEC # ( dbl_st_acc.l != dbl_expected.l ) ) { /* values */
324: 317 00015EEC 1d effffffd4e effffffd49 cmpl _dbl_st_acc,_dbl_expected
325: 318 00015EF7 21 10 jneq L9998
326: 319 00015EF9 1d effffffd45 effffffd40 cmpl _dbl_st_acc+4,_dbl_expected+4
327: 320 00015F04 21 03 13 00e5 jeql L263
328: 321 00015F09 L9998:
329: 322 00015F09 # errcnt++; /* bump the error count */
330: 323 00015F09 6d effffffd31 incl _errcnt
331: 324 00015F0F # if( prt_error ) {
332: 325 00015F0F 5d effffffd2b tstl _prt_error
333: 326 00015F15 21 03 13 00b1 jeql L264
334: 327 00015F1A # writes(" \n"); /* start a new print line */
335: 328 00015F1A .data 1
336: 329 00000ca9 * L265:
337: 330 00000ca9 * 200A00 .ascii " \12\0"
338: 331 00000cac * .text
339: 332 00015F1A dd 8f00000ca9 pushl $L265
340: 333 00015F20 fe 08 effffffd19 callf $8,_writes
341: 334 00015F27 # writes("cycle: ");
342: 335 00015F27 .data 1
343: 336 00000cac * L266:
344: 337 00000cac * 6379636C653A2000 .ascii "cycle: \0"
345: 338 00000cb4 * .text
346: 339 00015F27 dd 8f00000cac pushl $L266
347: 340 00015F2D fe 08 effffffd0c callf $8,_writes
348: 341 00015F34 # writed( cycle );
349: 342 00015F34 dd effffffd06 pushl _cycle
350: 343 00015F3A fe 08 effffffcff callf $8,_writed
351: 344 00015F41 # writes(" LDD_STD test ");
352: 345 00015F41 .data 1
353: 346 00000cb4 * L267:
354: 347 00000cb4 * 20204C44445F5354442074657 .ascii " LDD_STD test \0"
355: 3742000
356: 348 00000cc4 * .text
357: 349 00015F41 dd 8f00000cb4 pushl $L267
358: 350 00015F47 fe 08 effffffcf2 callf $8,_writes
359: 351 00015F4E # writed( test_no );
360: 352 00015F4E dd effffffcec pushl _test_no
361: 353 00015F54 fe 08 effffffce5 callf $8,_writed
362: 354 00015F5B # writes(", subtest 2 (Cache Data) - BAD FINAL ACC\n");
363: 355 00015F5B .data 1
364: 356 00000cc4 * L268:
365: 357 00000cc4 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - BAD FINAL ACC\12\0"
366: 8436163686520446174612920
367: 2D204241442046494E414C204
368: 143430A00
369: 358 00000cee * .text
370: 359 00015F5B dd 8f00000cc4 pushl $L268
371: 360 00015F61 fe 08 effffffcd8 callf $8,_writes
372: 361 00015F68 # print_ldd_data();
373: 362 00015F68 fe 04 ef0000077f callf $4,_print_ldd_data
374: 363 00015F6F # writes(", index = ");
375: 364 00015F6F .data 1
376: 365 00000cee * L269:
377: 366 00000cee * 2C20696E646578203D2000 .ascii ", index = \0"
378: 367 00000cf9 * .text
379: 368 00015F6F dd 8f00000cee pushl $L269
380: 369 00015F75 fe 08 effffffcc4 callf $8,_writes
381: 370 00015F7C # writed( index );
382: 371 00015F7C dd effffffcbe pushl _index
383: 372 00015F82 fe 08 effffffcb7 callf $8,_writed
384: 373 00015F89 # writec('\n');
385: 374 00015F89 dd 0a pushl $10
386: 375 00015F8B fe 08 effffffcae callf $8,_writec
387: 376 00015F92 # writes(" Acc expected = ");
388: 377 00015F92 .data 1
389: 378 00000cf9 * L270:
390: 379 00000cf9 * 2020202020202020202020202 .ascii " Acc expected = \0"
391: 0202020202020202020202020
392: 2020202020202041636320657
393: 8706563746564203D2000
394: 380 00000d29 * .text
395: 381 00015F92 dd 8f00000cf9 pushl $L270
396: 382 00015F98 fe 08 effffffca1 callf $8,_writes
397: 383 00015F9F # write32h( dbl_expected.m );
398: 384 00015F9F dd effffffc9b pushl _dbl_expected
399: 385 00015FA5 fe 08 effffffc94 callf $8,_write32h
400: 386 00015FAC # writec(' ');
401: 387 00015FAC dd 20 pushl $32
402: 388 00015FAE fe 08 effffffc8b callf $8,_writec
403: 389 00015FB5 # write32h( dbl_expected.l );
404: 390 00015FB5 dd effffffc89 pushl _dbl_expected+4
405: 391 00015FBB fe 08 effffffc7e callf $8,_write32h
406: 392 00015FC2 # writec('\n');
407: 393 00015FC2 dd 0a pushl $10
408: 394 00015FC4 fe 08 effffffc75 callf $8,_writec
409: 395 00015FCB # }
410: 396 00015FCB # if( halt_flg )
411: 397 00015FCB L264:
412: 398 00015FCB 5d effffffc6f tstl _halt_flg
413: 399 00015FD1 31 09 jeql L271
414: 400 00015FD3 # ldd_er_halt( BAD_ACC_HLT ); /* halt on the error */
415: 401 00015FD3 dd 01 pushl $1
416: 402 00015FD5 fe 08 ef0000077a callf $8,_ldd_er_halt
417: 403 00015FDC # if( loop_on_err ) {
418: 404 00015FDC L271:
419: 405 00015FDC 5d effffffc5e tstl _loop_on_err
420: 406 00015FE2 31 0a jeql L272
421: 407 00015FE4 # force_loop = TRUE; /* set the force loop flag */
422: 408 00015FE4 0d 01 effffffc55 movl $1,_force_loop
423: 409 00015FEB # asm("brw _ldd_2_lp1");; /* and loop on the error */
424: 410 00015FEB 13 fee7 brw _ldd_2_lp1
425: 411 00015FEE # } /* end of loop on error */
426: 412 00015FEE # } /* end of compare error */
427: 413 00015FEE L272:
428: 414 00015FEE # } /* end of WHILE loop */
429: 415 00015FEE L263:
430: 416 00015FEE L257:
431: 417 00015FEE 6d effffffc4c incl _index
432: 418 00015FF4 13 fe7f jbr L259
433: 419 00015FF7 L258:
434: 420 00015FF7 # } /* end of subtest 2 */
435: 421 00015FF7 40 ret#2
436: 422 00015FF8 .set L253,0x0
437: 423 00015FF8 L255:
438: 424 00015FF8 13 fe68 jbr L256
439: 425 00015FFB .data
440: 426 00000c20 * .text
441: 427 00015FFB 00 .align 1
442: 428 00015FFC .globl _ldd_3
443: 429 00015FFC _ldd_3:
444: 430 00015FFC 0000 .word L273
445: 431 00015FFE #
446: 432 00015FFE #
447: 433 00015FFE #
448: 434 00015FFE # /************************************************************************
449: 435 00015FFE # *
450: 436 00015FFE # * SUBTEST 3 - Check for register corruption (ldd)
451: 437 00015FFE # *
452: 438 00015FFE # ************************************************************************/
453: 439 00015FFE # ldd_3()
454: 440 00015FFE # {
455: 441 00015FFE 13 01c7 jbr L275
456: 442 00016001 L276:
457: 443 00016001 # force_loop = FALSE; /* clear force_loop flg */
458: 444 00016001 4d effffffc39 clrl _force_loop
459: 445 00016007 # subtest = 3;
460: 446 00016007 0d 03 effffffc32 movl $3,_subtest
461: 447 0001600E # fill_reg_buf( load_regs ); /* get patterns for regs */
462: 448 0001600E dd 8f00000000 pushl $_load_regs
463: 449 00016014 fe 08 effffffc25 callf $8,_fill_reg_buf
464: 450 0001601B # index = 0;
465: 451 0001601B 4d effffffc1f clrl _index
466: 452 00016021 # dbl_ld_acc = ldd_1_data[0].ld; /* get value to load */
467: 453 00016021 0d effffffc1d effffffc18 movl _ldd_1_data+4,_dbl_ld_acc+4
468: 454 0001602C 0d effffffc0e effffffc09 movl _ldd_1_data,_dbl_ld_acc
469: 455 00016037 # if( dbl_ld_acc.m & 0x7f800000 )
470: 456 00016037 3d 8f7f800000 effffffbfe bitl $2139095040,_dbl_ld_acc
471: 457 00016042 31 18 jeql L278
472: 458 00016044 # dbl_expected = dbl_ld_acc; /* expected = loaded */
473: 459 00016044 0d effffffbfa effffffbf5 movl _dbl_ld_acc+4,_dbl_expected+4
474: 460 0001604F 0d effffffbeb effffffbe6 movl _dbl_ld_acc,_dbl_expected
475: 461 0001605A # else {
476: 462 0001605A 11 0c jbr L279
477: 463 0001605C L278:
478: 464 0001605C # dbl_expected.m = 0; /* expect a '0' */
479: 465 0001605C 4d effffffbde clrl _dbl_expected
480: 466 00016062 # dbl_expected.l = 0;
481: 467 00016062 4d effffffbdc clrl _dbl_expected+4
482: 468 00016068 # }
483: 469 00016068 L279:
484: 470 00016068 # /*
485: 471 00016068 # * If LOOP ON ERROR is set, this is the loop for this subtest.
486: 472 00016068 # * The force loop flag is set after the first error.
487: 473 00016068 # */
488: 474 00016068 # asm("_ldd_3_lp1:");
489: 475 00016068 _ldd_3_lp1:
490: 476 00016068 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
491: 477 00016068 ab 891fff effffffbcf loadr $0x1fff,_load_regs
492: 478 00016071 # asm("nop");
493: 479 00016071 10 nop
494: 480 00016072 # asm("ldd _dbl_ld_acc"); /* load the accumulator */
495: 481 00016072 07 effffffbc8 ldd _dbl_ld_acc
496: 482 00016078 # asm("nop");
497: 483 00016078 10 nop
498: 484 00016079 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
499: 485 00016079 bb 891fff effffffbbe storer $0x1fff,_store_regs
500: 486 00016082 # asm("nop");
501: 487 00016082 10 nop
502: 488 00016083 # asm("std _dbl_st_acc"); /* save the accumulator */
503: 489 00016083 27 effffffbb7 std _dbl_st_acc
504: 490 00016089 # if( force_loop )
505: 491 00016089 5d effffffbb1 tstl _force_loop
506: 492 0001608F 31 02 jeql L280
507: 493 00016091 # asm("brb _ldd_3_lp1");; /* loop on the error */
508: 494 00016091 11 d5 brb _ldd_3_lp1
509: 495 00016093 L280:
510: 496 00016093 # /*
511: 497 00016093 # * Now compare the stored register values to those that were loaded
512: 498 00016093 # */
513: 499 00016093 # index2 = 0;
514: 500 00016093 4d effffffba7 clrl _index2
515: 501 00016099 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
516: 502 00016099 L281:
517: 503 00016099 0d effffffba1 50 movl _index2,r0
518: 504 000160A0 0d effffffb9a 51 movl _index2,r1
519: 505 000160A7 1d 40effffffb92 cmpl _load_regs[r0],_store_regs[r1]
520: 41effffffb8c
521: 506 000160B4 21 11 jneq L282
522: 507 000160B6 1d effffffb84 0d cmpl _index2,$13
523: 508 000160BD 81 08 jgeq L282
524: 509 000160BF # index2++; /* check reg values */
525: 510 000160BF 6d effffffb7b incl _index2
526: 511 000160C5 11 d2 jbr L281
527: 512 000160C7 L282:
528: 513 000160C7 # if( index2 < 13 ) { /* error if index2 < 13 */
529: 514 000160C7 1d effffffb73 0d cmpl _index2,$13
530: 515 000160CE 91 03 13 00f4 jgeq L283
531: 516 000160D3 # errcnt++; /* bump the error count */
532: 517 000160D3 6d effffffb67 incl _errcnt
533: 518 000160D9 # if( prt_error ) {
534: 519 000160D9 5d effffffb61 tstl _prt_error
535: 520 000160DF 21 03 13 00c0 jeql L284
536: 521 000160E4 # writes(" \n"); /* start a new print line */
537: 522 000160E4 .data 1
538: 523 00000d29 * L285:
539: 524 00000d29 * 200A00 .ascii " \12\0"
540: 525 00000d2c * .text
541: 526 000160E4 dd 8f00000d29 pushl $L285
542: 527 000160EA fe 08 effffffb4f callf $8,_writes
543: 528 000160F1 # writes("cycle: ");
544: 529 000160F1 .data 1
545: 530 00000d2c * L286:
546: 531 00000d2c * 6379636C653A2000 .ascii "cycle: \0"
547: 532 00000d34 * .text
548: 533 000160F1 dd 8f00000d2c pushl $L286
549: 534 000160F7 fe 08 effffffb42 callf $8,_writes
550: 535 000160FE # writed( cycle );
551: 536 000160FE dd effffffb3c pushl _cycle
552: 537 00016104 fe 08 effffffb35 callf $8,_writed
553: 538 0001610B # writes(" LDD_STD test ");
554: 539 0001610B .data 1
555: 540 00000d34 * L287:
556: 541 00000d34 * 20204C44445F5354442074657 .ascii " LDD_STD test \0"
557: 3742000
558: 542 00000d44 * .text
559: 543 0001610B dd 8f00000d34 pushl $L287
560: 544 00016111 fe 08 effffffb28 callf $8,_writes
561: 545 00016118 # writed( test_no );
562: 546 00016118 dd effffffb22 pushl _test_no
563: 547 0001611E fe 08 effffffb1b callf $8,_writed
564: 548 00016125 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n");
565: 549 00016125 .data 1
566: 550 00000d44 * L288:
567: 551 00000d44 * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
568: D204120524547495354455220
569: 574153204D4F4449464945440
570: A00
571: 552 00000d6b * .text
572: 553 00016125 dd 8f00000d44 pushl $L288
573: 554 0001612B fe 08 effffffb0e callf $8,_writes
574: 555 00016132 # print_ldd_data(); /* print the operands */
575: 556 00016132 fe 04 ef000005b5 callf $4,_print_ldd_data
576: 557 00016139 # writes("\nregister "); /* print the information */
577: 558 00016139 .data 1
578: 559 00000d6b * L289:
579: 560 00000d6b * 0A72656769737465722000 .ascii "\12register \0"
580: 561 00000d76 * .text
581: 562 00016139 dd 8f00000d6b pushl $L289
582: 563 0001613F fe 08 effffffafa callf $8,_writes
583: 564 00016146 # writed( index2 ); /* about the corrupted */
584: 565 00016146 dd effffffaf4 pushl _index2
585: 566 0001614C fe 08 effffffaed callf $8,_writed
586: 567 00016153 # writes(" = "); /* register */
587: 568 00016153 .data 1
588: 569 00000d76 * L290:
589: 570 00000d76 * 203D2000 .ascii " = \0"
590: 571 00000d7a * .text
591: 572 00016153 dd 8f00000d76 pushl $L290
592: 573 00016159 fe 08 effffffae0 callf $8,_writes
593: 574 00016160 # write32h( store_regs[index2] );
594: 575 00016160 0d effffffada 50 movl _index2,r0
595: 576 00016167 dd 40effffffad2 pushl _store_regs[r0]
596: 577 0001616E fe 08 effffffacb callf $8,_write32h
597: 578 00016175 # writes(", should be = ");
598: 579 00016175 .data 1
599: 580 00000d7a * L291:
600: 581 00000d7a * 2C202073686F756C642062652 .ascii ", should be = \0"
601: 03D2000
602: 582 00000d8a * .text
603: 583 00016175 dd 8f00000d7a pushl $L291
604: 584 0001617B fe 08 effffffabe callf $8,_writes
605: 585 00016182 # write32h( load_regs[index2] );
606: 586 00016182 0d effffffab8 50 movl _index2,r0
607: 587 00016189 dd 40effffffab0 pushl _load_regs[r0]
608: 588 00016190 fe 08 effffffaa9 callf $8,_write32h
609: 589 00016197 # writes("\n");
610: 590 00016197 .data 1
611: 591 00000d8a * L292:
612: 592 00000d8a * 0A00 .ascii "\12\0"
613: 593 00000d8c * .text
614: 594 00016197 dd 8f00000d8a pushl $L292
615: 595 0001619D fe 08 effffffa9c callf $8,_writes
616: 596 000161A4 # }
617: 597 000161A4 # if( halt_flg )
618: 598 000161A4 L284:
619: 599 000161A4 5d effffffa96 tstl _halt_flg
620: 600 000161AA 31 09 jeql L293
621: 601 000161AC # ldd_er_halt( BAD_REG_HLT ); /* halt on the error */
622: 602 000161AC dd 02 pushl $2
623: 603 000161AE fe 08 ef000005a1 callf $8,_ldd_er_halt
624: 604 000161B5 # if( loop_on_err ) {
625: 605 000161B5 L293:
626: 606 000161B5 5d effffffa85 tstl _loop_on_err
627: 607 000161BB 31 0a jeql L294
628: 608 000161BD # force_loop = TRUE; /* set the force loop flag */
629: 609 000161BD 0d 01 effffffa7c movl $1,_force_loop
630: 610 000161C4 # asm("brw _ldd_3_lp1");; /* and loop on the error */
631: 611 000161C4 13 fea1 brw _ldd_3_lp1
632: 612 000161C7 # } /* end of loop on error */
633: 613 000161C7 # } /* end of register corruption error */
634: 614 000161C7 L294:
635: 615 000161C7 # } /* end of subtest 3 */
636: 616 000161C7 L283:
637: 617 000161C7 40 ret#2
638: 618 000161C8 .set L273,0x0
639: 619 000161C8 L275:
640: 620 000161C8 13 fe36 jbr L276
641: 621 000161CB .data
642: 622 00000c20 * .text
643: 623 000161CB 00 .align 1
644: 624 000161CC .globl _ldd_4
645: 625 000161CC _ldd_4:
646: 626 000161CC 0000 .word L295
647: 627 000161CE #
648: 628 000161CE #
649: 629 000161CE #
650: 630 000161CE # /************************************************************************
651: 631 000161CE # *
652: 632 000161CE # * SUBTEST 4 - Check for register corruption (std)
653: 633 000161CE # *
654: 634 000161CE # ************************************************************************/
655: 635 000161CE # ldd_4()
656: 636 000161CE # {
657: 637 000161CE 13 0196 jbr L297
658: 638 000161D1 L298:
659: 639 000161D1 # force_loop = FALSE; /* clear force_loop flg */
660: 640 000161D1 4d effffffa69 clrl _force_loop
661: 641 000161D7 # subtest = 4;
662: 642 000161D7 0d 04 effffffa62 movl $4,_subtest
663: 643 000161DE # fill_reg_buf( load_regs ); /* get patterns for regs */
664: 644 000161DE dd 8f00000000 pushl $_load_regs
665: 645 000161E4 fe 08 effffffa55 callf $8,_fill_reg_buf
666: 646 000161EB # index = 0;
667: 647 000161EB 4d effffffa4f clrl _index
668: 648 000161F1 # dbl_ld_acc = ldd_1_data[0].ld; /* get value to store */
669: 649 000161F1 0d effffffa4d effffffa48 movl _ldd_1_data+4,_dbl_ld_acc+4
670: 650 000161FC 0d effffffa3e effffffa39 movl _ldd_1_data,_dbl_ld_acc
671: 651 00016207 # /*
672: 652 00016207 # * If LOOP ON ERROR is set, this is the loop for this subtest.
673: 653 00016207 # * The force loop flag is set after the first error.
674: 654 00016207 # */
675: 655 00016207 # asm("_ldd_4_lp1:");
676: 656 00016207 _ldd_4_lp1:
677: 657 00016207 # asm("ldd _dbl_ld_acc"); /* load the accumulator */
678: 658 00016207 07 effffffa33 ldd _dbl_ld_acc
679: 659 0001620D # asm("nop");
680: 660 0001620D 10 nop
681: 661 0001620E # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
682: 662 0001620E ab 891fff effffffa29 loadr $0x1fff,_load_regs
683: 663 00016217 # asm("nop");
684: 664 00016217 10 nop
685: 665 00016218 # asm("std _dbl_st_acc"); /* save the accumulator */
686: 666 00016218 27 effffffa22 std _dbl_st_acc
687: 667 0001621E # asm("nop");
688: 668 0001621E 10 nop
689: 669 0001621F # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
690: 670 0001621F bb 891fff effffffa18 storer $0x1fff,_store_regs
691: 671 00016228 # if( force_loop )
692: 672 00016228 5d effffffa12 tstl _force_loop
693: 673 0001622E 31 02 jeql L299
694: 674 00016230 # asm("brb _ldd_4_lp1");; /* loop on the error */
695: 675 00016230 11 d5 brb _ldd_4_lp1
696: 676 00016232 L299:
697: 677 00016232 # /*
698: 678 00016232 # * Now compare the stored register values to those that were loaded
699: 679 00016232 # */
700: 680 00016232 # index2 = 0;
701: 681 00016232 4d effffffa08 clrl _index2
702: 682 00016238 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
703: 683 00016238 L300:
704: 684 00016238 0d effffffa02 50 movl _index2,r0
705: 685 0001623F 0d effffff9fb 51 movl _index2,r1
706: 686 00016246 1d 40effffff9f3 cmpl _load_regs[r0],_store_regs[r1]
707: 41effffff9ed
708: 687 00016253 21 11 jneq L301
709: 688 00016255 1d effffff9e5 0d cmpl _index2,$13
710: 689 0001625C 81 08 jgeq L301
711: 690 0001625E # index2++; /* check reg values */
712: 691 0001625E 6d effffff9dc incl _index2
713: 692 00016264 11 d2 jbr L300
714: 693 00016266 L301:
715: 694 00016266 # if( index2 < 13 ) { /* error if index2 < 13 */
716: 695 00016266 1d effffff9d4 0d cmpl _index2,$13
717: 696 0001626D 91 03 13 00f4 jgeq L302
718: 697 00016272 # errcnt++; /* bump the error count */
719: 698 00016272 6d effffff9c8 incl _errcnt
720: 699 00016278 # if( prt_error ) {
721: 700 00016278 5d effffff9c2 tstl _prt_error
722: 701 0001627E 21 03 13 00c0 jeql L303
723: 702 00016283 # writes(" \n"); /* start a new print line */
724: 703 00016283 .data 1
725: 704 00000d8c * L304:
726: 705 00000d8c * 200A00 .ascii " \12\0"
727: 706 00000d8f * .text
728: 707 00016283 dd 8f00000d8c pushl $L304
729: 708 00016289 fe 08 effffff9b0 callf $8,_writes
730: 709 00016290 # writes("cycle: ");
731: 710 00016290 .data 1
732: 711 00000d8f * L305:
733: 712 00000d8f * 6379636C653A2000 .ascii "cycle: \0"
734: 713 00000d97 * .text
735: 714 00016290 dd 8f00000d8f pushl $L305
736: 715 00016296 fe 08 effffff9a3 callf $8,_writes
737: 716 0001629D # writed( cycle );
738: 717 0001629D dd effffff99d pushl _cycle
739: 718 000162A3 fe 08 effffff996 callf $8,_writed
740: 719 000162AA # writes(" LDD_STD test ");
741: 720 000162AA .data 1
742: 721 00000d97 * L306:
743: 722 00000d97 * 204C44445F535444207465737 .ascii " LDD_STD test \0"
744: 42000
745: 723 00000da6 * .text
746: 724 000162AA dd 8f00000d97 pushl $L306
747: 725 000162B0 fe 08 effffff989 callf $8,_writes
748: 726 000162B7 # writed( test_no );
749: 727 000162B7 dd effffff983 pushl _test_no
750: 728 000162BD fe 08 effffff97c callf $8,_writed
751: 729 000162C4 # writes(", subtest 4 - A REGISTER WAS MODIFIED\n");
752: 730 000162C4 .data 1
753: 731 00000da6 * L307:
754: 732 00000da6 * 2C20737562746573742034202 .ascii ", subtest 4 - A REGISTER WAS MODIFIED\12\0"
755: D204120524547495354455220
756: 574153204D4F4449464945440
757: A00
758: 733 00000dcd * .text
759: 734 000162C4 dd 8f00000da6 pushl $L307
760: 735 000162CA fe 08 effffff96f callf $8,_writes
761: 736 000162D1 # print_ldd_data(); /* print the operands */
762: 737 000162D1 fe 04 ef00000416 callf $4,_print_ldd_data
763: 738 000162D8 # writes("\nregister "); /* print the information */
764: 739 000162D8 .data 1
765: 740 00000dcd * L308:
766: 741 00000dcd * 0A72656769737465722000 .ascii "\12register \0"
767: 742 00000dd8 * .text
768: 743 000162D8 dd 8f00000dcd pushl $L308
769: 744 000162DE fe 08 effffff95b callf $8,_writes
770: 745 000162E5 # writed( index2 ); /* about the corrupted */
771: 746 000162E5 dd effffff955 pushl _index2
772: 747 000162EB fe 08 effffff94e callf $8,_writed
773: 748 000162F2 # writes(" = "); /* register */
774: 749 000162F2 .data 1
775: 750 00000dd8 * L309:
776: 751 00000dd8 * 203D2000 .ascii " = \0"
777: 752 00000ddc * .text
778: 753 000162F2 dd 8f00000dd8 pushl $L309
779: 754 000162F8 fe 08 effffff941 callf $8,_writes
780: 755 000162FF # write32h( store_regs[index2] );
781: 756 000162FF 0d effffff93b 50 movl _index2,r0
782: 757 00016306 dd 40effffff933 pushl _store_regs[r0]
783: 758 0001630D fe 08 effffff92c callf $8,_write32h
784: 759 00016314 # writes(", should be = ");
785: 760 00016314 .data 1
786: 761 00000ddc * L310:
787: 762 00000ddc * 2C202073686F756C642062652 .ascii ", should be = \0"
788: 03D2000
789: 763 00000dec * .text
790: 764 00016314 dd 8f00000ddc pushl $L310
791: 765 0001631A fe 08 effffff91f callf $8,_writes
792: 766 00016321 # write32h( load_regs[index2] );
793: 767 00016321 0d effffff919 50 movl _index2,r0
794: 768 00016328 dd 40effffff911 pushl _load_regs[r0]
795: 769 0001632F fe 08 effffff90a callf $8,_write32h
796: 770 00016336 # writes("\n");
797: 771 00016336 .data 1
798: 772 00000dec * L311:
799: 773 00000dec * 0A00 .ascii "\12\0"
800: 774 00000dee * .text
801: 775 00016336 dd 8f00000dec pushl $L311
802: 776 0001633C fe 08 effffff8fd callf $8,_writes
803: 777 00016343 # }
804: 778 00016343 # if( halt_flg )
805: 779 00016343 L303:
806: 780 00016343 5d effffff8f7 tstl _halt_flg
807: 781 00016349 31 09 jeql L312
808: 782 0001634B # ldd_er_halt( BAD_REG_HLT ); /* halt on the error */
809: 783 0001634B dd 02 pushl $2
810: 784 0001634D fe 08 ef00000402 callf $8,_ldd_er_halt
811: 785 00016354 # if( loop_on_err ) {
812: 786 00016354 L312:
813: 787 00016354 5d effffff8e6 tstl _loop_on_err
814: 788 0001635A 31 0a jeql L313
815: 789 0001635C # force_loop = TRUE; /* set the force loop flag */
816: 790 0001635C 0d 01 effffff8dd movl $1,_force_loop
817: 791 00016363 # asm("brw _ldd_4_lp1");; /* and loop on the error */
818: 792 00016363 13 fea1 brw _ldd_4_lp1
819: 793 00016366 # } /* end of loop on error */
820: 794 00016366 # } /* end of register corruption error */
821: 795 00016366 L313:
822: 796 00016366 # } /* end of subtest 4 */
823: 797 00016366 L302:
824: 798 00016366 40 ret#2
825: 799 00016367 .set L295,0x0
826: 800 00016367 L297:
827: 801 00016367 13 fe67 jbr L298
828: 802 0001636A .data
829: 803 00000c20 * .text
830: 804 0001636A .align 1
831: 805 0001636A .globl _ldd_5
832: 806 0001636A _ldd_5:
833: 807 0001636A 0000 .word L314
834: 808 0001636C #
835: 809 0001636C #
836: 810 0001636C #
837: 811 0001636C # /************************************************************************
838: 812 0001636C # *
839: 813 0001636C # * SUBTEST 5 - Check for PSL corruption (ldd)
840: 814 0001636C # *
841: 815 0001636C # ************************************************************************/
842: 816 0001636C # ldd_5()
843: 817 0001636C # {
844: 818 0001636C 13 0197 jbr L316
845: 819 0001636F L317:
846: 820 0001636F # force_loop = FALSE; /* clear force_loop flg */
847: 821 0001636F 4d effffff8cb clrl _force_loop
848: 822 00016375 # subtest = 5;
849: 823 00016375 0d 05 effffff8c4 movl $5,_subtest
850: 824 0001637C # status_index = 0;
851: 825 0001637C 4d effffff8be clrl _status_index
852: 826 00016382 # fill_reg_buf( load_regs ); /* get patterns for regs */
853: 827 00016382 dd 8f00000000 pushl $_load_regs
854: 828 00016388 fe 08 effffff8b1 callf $8,_fill_reg_buf
855: 829 0001638F # for( index = 0; index < 3; index++ ) {
856: 830 0001638F 4d effffff8ab clrl _index
857: 831 00016395 L320:
858: 832 00016395 1d effffff8a5 03 cmpl _index,$3
859: 833 0001639C 91 03 13 0164 jgeq L319
860: 834 000163A1 # dbl_ld_acc = ldd_1_data[index].ld; /* get value to load */
861: 835 000163A1 48 04 effffff898 50 shll $4,_index,r0
862: 836 000163A9 0c 8f00000000 50 addl2 $_ldd_1_data,r0
863: 837 000163B0 0d a004 effffff88c movl 4(r0),_dbl_ld_acc+4
864: 838 000163B8 0d 60 effffff881 movl (r0),_dbl_ld_acc
865: 839 000163BF # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
866: 840 000163BF 0d effffff87b 50 movl _status_index,r0
867: 841 000163C6 0d 40effffff873 movl _status_array[r0],_sgl_dummy1
868: effffff86e
869: 842 000163D2 # /*
870: 843 000163D2 # * If LOOP ON ERROR is set, this is the loop for this subtest.
871: 844 000163D2 # * The force loop flag is set after the first error.
872: 845 000163D2 # */
873: 846 000163D2 # asm("_ldd_5_lp1:");
874: 847 000163D2 _ldd_5_lp1:
875: 848 000163D2 # asm("tstl _sgl_dummy1"); /* set the PSL status */
876: 849 000163D2 5d effffff868 tstl _sgl_dummy1
877: 850 000163D8 # asm("movpsl _init_psl"); /* save the initial PSL */
878: 851 000163D8 cd effffff862 movpsl _init_psl
879: 852 000163DE # asm("nop");
880: 853 000163DE 10 nop
881: 854 000163DF # asm("ldd _dbl_ld_acc"); /* load the accumulator */
882: 855 000163DF 07 effffff85b ldd _dbl_ld_acc
883: 856 000163E5 # asm("nop");
884: 857 000163E5 10 nop
885: 858 000163E6 # asm("movpsl _psl_val"); /* save the final PSL */
886: 859 000163E6 cd effffff854 movpsl _psl_val
887: 860 000163EC # asm("nop");
888: 861 000163EC 10 nop
889: 862 000163ED # asm("std _dbl_st_acc"); /* save the accumulator */
890: 863 000163ED 27 effffff84d std _dbl_st_acc
891: 864 000163F3 # if( force_loop )
892: 865 000163F3 5d effffff847 tstl _force_loop
893: 866 000163F9 31 02 jeql L321
894: 867 000163FB # asm("brb _ldd_5_lp1");; /* loop on the error */
895: 868 000163FB 11 d5 brb _ldd_5_lp1
896: 869 000163FD L321:
897: 870 000163FD # /*
898: 871 000163FD # * Now compare the final PSL to the initial PSL -they should be the same
899: 872 000163FD # */
900: 873 000163FD # exp_psl = init_psl;
901: 874 000163FD 0d effffff83d effffff838 movl _init_psl,_exp_psl
902: 875 00016408 # if( psl_val != exp_psl ) {
903: 876 00016408 1d effffff832 effffff82d cmpl _psl_val,_exp_psl
904: 877 00016413 21 03 13 00e4 jeql L322
905: 878 00016418 # errcnt++; /* bump the error count */
906: 879 00016418 6d effffff822 incl _errcnt
907: 880 0001641E # if( prt_error ) {
908: 881 0001641E 5d effffff81c tstl _prt_error
909: 882 00016424 21 03 13 00b0 jeql L323
910: 883 00016429 # writes(" \n"); /* start a new print line */
911: 884 00016429 .data 1
912: 885 00000dee * L324:
913: 886 00000dee * 200A00 .ascii " \12\0"
914: 887 00000df1 * .text
915: 888 00016429 dd 8f00000dee pushl $L324
916: 889 0001642F fe 08 effffff80a callf $8,_writes
917: 890 00016436 # writes("cycle: ");
918: 891 00016436 .data 1
919: 892 00000df1 * L325:
920: 893 00000df1 * 6379636C653A2000 .ascii "cycle: \0"
921: 894 00000df9 * .text
922: 895 00016436 dd 8f00000df1 pushl $L325
923: 896 0001643C fe 08 effffff7fd callf $8,_writes
924: 897 00016443 # writed( cycle );
925: 898 00016443 dd effffff7f7 pushl _cycle
926: 899 00016449 fe 08 effffff7f0 callf $8,_writed
927: 900 00016450 # writes(" LDD_STD test ");
928: 901 00016450 .data 1
929: 902 00000df9 * L326:
930: 903 00000df9 * 20204C44445F5354442074657 .ascii " LDD_STD test \0"
931: 3742000
932: 904 00000e09 * .text
933: 905 00016450 dd 8f00000df9 pushl $L326
934: 906 00016456 fe 08 effffff7e3 callf $8,_writes
935: 907 0001645D # writed( test_no );
936: 908 0001645D dd effffff7dd pushl _test_no
937: 909 00016463 fe 08 effffff7d6 callf $8,_writed
938: 910 0001646A # writes(", subtest 5 - INCORRECT FINAL PSL - LDD\n");
939: 911 0001646A .data 1
940: 912 00000e09 * L327:
941: 913 00000e09 * 2C20737562746573742035202 .ascii ", subtest 5 - INCORRECT FINAL PSL - LDD\12\0"
942: 02D20494E434F525245435420
943: 46494E414C2050534C202D204
944: C44440A00
945: 914 00000e33 * .text
946: 915 0001646A dd 8f00000e09 pushl $L327
947: 916 00016470 fe 08 effffff7c9 callf $8,_writes
948: 917 00016477 # print_ldd_data(); /* print the operands */
949: 918 00016477 fe 04 ef00000270 callf $4,_print_ldd_data
950: 919 0001647E # writes("\ninitial PSL = ");
951: 920 0001647E .data 1
952: 921 00000e33 * L328:
953: 922 00000e33 * 0A696E697469616C2050534C2 .ascii "\12initial PSL = \0"
954: 03D2000
955: 923 00000e43 * .text
956: 924 0001647E dd 8f00000e33 pushl $L328
957: 925 00016484 fe 08 effffff7b5 callf $8,_writes
958: 926 0001648B # write32h( init_psl );
959: 927 0001648B dd effffff7af pushl _init_psl
960: 928 00016491 fe 08 effffff7a8 callf $8,_write32h
961: 929 00016498 # writes(", final PSL = ");
962: 930 00016498 .data 1
963: 931 00000e43 * L329:
964: 932 00000e43 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
965: 03D2000
966: 933 00000e53 * .text
967: 934 00016498 dd 8f00000e43 pushl $L329
968: 935 0001649E fe 08 effffff79b callf $8,_writes
969: 936 000164A5 # write32h( psl_val );
970: 937 000164A5 dd effffff795 pushl _psl_val
971: 938 000164AB fe 08 effffff78e callf $8,_write32h
972: 939 000164B2 # writes(", expected PSL = ");
973: 940 000164B2 .data 1
974: 941 00000e53 * L330:
975: 942 00000e53 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
976: 0534C203D2000
977: 943 00000e66 * .text
978: 944 000164B2 dd 8f00000e53 pushl $L330
979: 945 000164B8 fe 08 effffff781 callf $8,_writes
980: 946 000164BF # write32h( exp_psl );
981: 947 000164BF dd effffff77b pushl _exp_psl
982: 948 000164C5 fe 08 effffff774 callf $8,_write32h
983: 949 000164CC # writes("\n");
984: 950 000164CC .data 1
985: 951 00000e66 * L331:
986: 952 00000e66 * 0A00 .ascii "\12\0"
987: 953 00000e68 * .text
988: 954 000164CC dd 8f00000e66 pushl $L331
989: 955 000164D2 fe 08 effffff767 callf $8,_writes
990: 956 000164D9 # }
991: 957 000164D9 # if( halt_flg )
992: 958 000164D9 L323:
993: 959 000164D9 5d effffff761 tstl _halt_flg
994: 960 000164DF 31 09 jeql L332
995: 961 000164E1 # ldd_er_halt( BAD_PSL_HLT ); /* halt on the error */
996: 962 000164E1 dd 03 pushl $3
997: 963 000164E3 fe 08 ef0000026c callf $8,_ldd_er_halt
998: 964 000164EA # if( loop_on_err ) {
999: 965 000164EA L332:
1000: 966 000164EA 5d effffff750 tstl _loop_on_err
1001: 967 000164F0 31 0a jeql L333
1002: 968 000164F2 # force_loop = TRUE; /* set the force loop flag */
1003: 969 000164F2 0d 01 effffff747 movl $1,_force_loop
1004: 970 000164F9 # asm("brw _ldd_5_lp1");; /* and loop on the error */
1005: 971 000164F9 13 fed6 brw _ldd_5_lp1
1006: 972 000164FC # } /* end of loop on error */
1007: 973 000164FC # } /* end of PSL corruption error */
1008: 974 000164FC L333:
1009: 975 000164FC # } /* end of WHILE loop */
1010: 976 000164FC L322:
1011: 977 000164FC L318:
1012: 978 000164FC 6d effffff73e incl _index
1013: 979 00016502 13 fe90 jbr L320
1014: 980 00016505 L319:
1015: 981 00016505 # } /* end of subtest 5 */
1016: 982 00016505 40 ret#2
1017: 983 00016506 .set L314,0x0
1018: 984 00016506 L316:
1019: 985 00016506 13 fe66 jbr L317
1020: 986 00016509 .data
1021: 987 00000c20 * .text
1022: 988 00016509 00 .align 1
1023: 989 0001650A .globl _ldd_6
1024: 990 0001650A _ldd_6:
1025: 991 0001650A 0000 .word L334
1026: 992 0001650C #
1027: 993 0001650C #
1028: 994 0001650C #
1029: 995 0001650C # /************************************************************************
1030: 996 0001650C # *
1031: 997 0001650C # * SUBTEST 6 - STD status test
1032: 998 0001650C # *
1033: 999 0001650C # ************************************************************************/
1034: 1000 0001650C # ldd_6()
1035: 1001 0001650C # {
1036: 1002 0001650C 13 01dc jbr L336
1037: 1003 0001650F L337:
1038: 1004 0001650F # force_loop = FALSE;
1039: 1005 0001650F 4d effffff72b clrl _force_loop
1040: 1006 00016515 # index = 0; /* clear the data index */
1041: 1007 00016515 4d effffff725 clrl _index
1042: 1008 0001651B # status_index = 0; /* clear the status index */
1043: 1009 0001651B 4d effffff71f clrl _status_index
1044: 1010 00016521 # do {
1045: 1011 00016521 L340:
1046: 1012 00016521 # dbl_ld_acc = ldd_1_data[index].ld; /* get the dbl operand */
1047: 1013 00016521 48 04 effffff718 50 shll $4,_index,r0
1048: 1014 00016529 0c 8f00000000 50 addl2 $_ldd_1_data,r0
1049: 1015 00016530 0d a004 effffff70c movl 4(r0),_dbl_ld_acc+4
1050: 1016 00016538 0d 60 effffff701 movl (r0),_dbl_ld_acc
1051: 1017 0001653F # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
1052: 1018 0001653F 0d effffff6fb 50 movl _status_index,r0
1053: 1019 00016546 0d 40effffff6f3 movl _status_array[r0],_sgl_dummy1
1054: effffff6ee
1055: 1020 00016552 # /*
1056: 1021 00016552 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1057: 1022 00016552 # * The force loop flag is set after the first error.
1058: 1023 00016552 # */
1059: 1024 00016552 # asm("_ldd_6_lp1:");
1060: 1025 00016552 _ldd_6_lp1:
1061: 1026 00016552 # asm("ldd _dbl_ld_acc"); /* load the operand */
1062: 1027 00016552 07 effffff6e8 ldd _dbl_ld_acc
1063: 1028 00016558 # asm("tstl _sgl_dummy1"); /* generate initial status */
1064: 1029 00016558 5d effffff6e2 tstl _sgl_dummy1
1065: 1030 0001655E # asm("movpsl _init_psl"); /* save the initial status */
1066: 1031 0001655E cd effffff6dc movpsl _init_psl
1067: 1032 00016564 # asm("std _dbl_st_acc"); /* save the accumulator */
1068: 1033 00016564 27 effffff6d6 std _dbl_st_acc
1069: 1034 0001656A # asm("movpsl _psl_val"); /* save the final status */
1070: 1035 0001656A cd effffff6d0 movpsl _psl_val
1071: 1036 00016570 # if( force_loop ) /* loop? */
1072: 1037 00016570 5d effffff6ca tstl _force_loop
1073: 1038 00016576 31 06 jeql L341
1074: 1039 00016578 # asm("jmp _ldd_6_lp1");; /* run the loop again */
1075: 1040 00016578 71 efffffffd4 jmp _ldd_6_lp1
1076: 1041 0001657E L341:
1077: 1042 0001657E # exp_psl = init_psl; /* get the initial PSL */
1078: 1043 0001657E 0d effffff6bc effffff6b7 movl _init_psl,_exp_psl
1079: 1044 00016589 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
1080: 1045 00016589 ac 88f3 effffff6af andl2 $-13,_exp_psl
1081: 1046 00016591 # sgl_dummy2 = dbl_ld_acc.m; /* get MSW of the operand */
1082: 1047 00016591 0d effffff6a9 effffff6a4 movl _dbl_ld_acc,_sgl_dummy2
1083: 1048 0001659C # /* if( !no_fpp_wcs ) /* why? */
1084: 1049 0001659C # sgl_dummy2 &= 0xff800000; /* clear the fraction part */
1085: 1050 0001659C ac 8fff800000 effffff699 andl2 $-8388608,_sgl_dummy2
1086: 1051 000165A7 # if( !sgl_dummy2 )
1087: 1052 000165A7 5d effffff693 tstl _sgl_dummy2
1088: 1053 000165AD 21 07 jneq L342
1089: 1054 000165AF # exp_psl |= PSL_Z; /* expect the ZERO bit set */
1090: 1055 000165AF 8c 04 effffff68a orl2 $4,_exp_psl
1091: 1056 000165B6 # if( sgl_dummy2 < 0 )
1092: 1057 000165B6 L342:
1093: 1058 000165B6 5d effffff684 tstl _sgl_dummy2
1094: 1059 000165BC 81 07 jgeq L343
1095: 1060 000165BE # exp_psl |= PSL_N; /* expect the NEG bit set */
1096: 1061 000165BE 8c 08 effffff67b orl2 $8,_exp_psl
1097: 1062 000165C5 # if( psl_val != exp_psl ) { /* COMPARE the values */
1098: 1063 000165C5 L343:
1099: 1064 000165C5 1d effffff675 effffff670 cmpl _psl_val,_exp_psl
1100: 1065 000165D0 21 03 13 00e4 jeql L344
1101: 1066 000165D5 # errcnt++; /* bump the error count */
1102: 1067 000165D5 6d effffff665 incl _errcnt
1103: 1068 000165DB # if( prt_error ) {
1104: 1069 000165DB 5d effffff65f tstl _prt_error
1105: 1070 000165E1 21 03 13 00b0 jeql L345
1106: 1071 000165E6 # writes(" \n"); /* start a new print line */
1107: 1072 000165E6 .data 1
1108: 1073 00000e68 * L346:
1109: 1074 00000e68 * 200A00 .ascii " \12\0"
1110: 1075 00000e6b * .text
1111: 1076 000165E6 dd 8f00000e68 pushl $L346
1112: 1077 000165EC fe 08 effffff64d callf $8,_writes
1113: 1078 000165F3 # writes("cycle: ");
1114: 1079 000165F3 .data 1
1115: 1080 00000e6b * L347:
1116: 1081 00000e6b * 6379636C653A2000 .ascii "cycle: \0"
1117: 1082 00000e73 * .text
1118: 1083 000165F3 dd 8f00000e6b pushl $L347
1119: 1084 000165F9 fe 08 effffff640 callf $8,_writes
1120: 1085 00016600 # writed( cycle );
1121: 1086 00016600 dd effffff63a pushl _cycle
1122: 1087 00016606 fe 08 effffff633 callf $8,_writed
1123: 1088 0001660D # writes(" LDD_STD test ");
1124: 1089 0001660D .data 1
1125: 1090 00000e73 * L348:
1126: 1091 00000e73 * 20204C44445F5354442074657 .ascii " LDD_STD test \0"
1127: 3742000
1128: 1092 00000e83 * .text
1129: 1093 0001660D dd 8f00000e73 pushl $L348
1130: 1094 00016613 fe 08 effffff626 callf $8,_writes
1131: 1095 0001661A # writed( test_no );
1132: 1096 0001661A dd effffff620 pushl _test_no
1133: 1097 00016620 fe 08 effffff619 callf $8,_writed
1134: 1098 00016627 # writes(", subtest 6 - INCORRECT FINAL PSL - STD\n");
1135: 1099 00016627 .data 1
1136: 1100 00000e83 * L349:
1137: 1101 00000e83 * 2C20737562746573742036202 .ascii ", subtest 6 - INCORRECT FINAL PSL - STD\12\0"
1138: 02D20494E434F525245435420
1139: 46494E414C2050534C202D205
1140: 354440A00
1141: 1102 00000ead * .text
1142: 1103 00016627 dd 8f00000e83 pushl $L349
1143: 1104 0001662D fe 08 effffff60c callf $8,_writes
1144: 1105 00016634 # print_ldd_data(); /* print the operands */
1145: 1106 00016634 fe 04 ef000000b3 callf $4,_print_ldd_data
1146: 1107 0001663B # writes("\ninitial PSL = ");
1147: 1108 0001663B .data 1
1148: 1109 00000ead * L350:
1149: 1110 00000ead * 0A696E697469616C2050534C2 .ascii "\12initial PSL = \0"
1150: 03D2000
1151: 1111 00000ebd * .text
1152: 1112 0001663B dd 8f00000ead pushl $L350
1153: 1113 00016641 fe 08 effffff5f8 callf $8,_writes
1154: 1114 00016648 # write32h( init_psl );
1155: 1115 00016648 dd effffff5f2 pushl _init_psl
1156: 1116 0001664E fe 08 effffff5eb callf $8,_write32h
1157: 1117 00016655 # writes(", final PSL = ");
1158: 1118 00016655 .data 1
1159: 1119 00000ebd * L351:
1160: 1120 00000ebd * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
1161: 03D2000
1162: 1121 00000ecd * .text
1163: 1122 00016655 dd 8f00000ebd pushl $L351
1164: 1123 0001665B fe 08 effffff5de callf $8,_writes
1165: 1124 00016662 # write32h( psl_val );
1166: 1125 00016662 dd effffff5d8 pushl _psl_val
1167: 1126 00016668 fe 08 effffff5d1 callf $8,_write32h
1168: 1127 0001666F # writes(", expected PSL = ");
1169: 1128 0001666F .data 1
1170: 1129 00000ecd * L352:
1171: 1130 00000ecd * 2C20206578706563746564205 .ascii ", expected PSL = \0"
1172: 0534C203D2000
1173: 1131 00000ee0 * .text
1174: 1132 0001666F dd 8f00000ecd pushl $L352
1175: 1133 00016675 fe 08 effffff5c4 callf $8,_writes
1176: 1134 0001667C # write32h( exp_psl );
1177: 1135 0001667C dd effffff5be pushl _exp_psl
1178: 1136 00016682 fe 08 effffff5b7 callf $8,_write32h
1179: 1137 00016689 # writes("\n");
1180: 1138 00016689 .data 1
1181: 1139 00000ee0 * L353:
1182: 1140 00000ee0 * 0A00 .ascii "\12\0"
1183: 1141 00000ee2 * .text
1184: 1142 00016689 dd 8f00000ee0 pushl $L353
1185: 1143 0001668F fe 08 effffff5aa callf $8,_writes
1186: 1144 00016696 # }
1187: 1145 00016696 # if( halt_flg )
1188: 1146 00016696 L345:
1189: 1147 00016696 5d effffff5a4 tstl _halt_flg
1190: 1148 0001669C 31 09 jeql L354
1191: 1149 0001669E # ldd_er_halt( BAD_PSL_HLT ); /* halt on the error */
1192: 1150 0001669E dd 03 pushl $3
1193: 1151 000166A0 fe 08 ef000000af callf $8,_ldd_er_halt
1194: 1152 000166A7 # if( loop_on_err ) {
1195: 1153 000166A7 L354:
1196: 1154 000166A7 5d effffff593 tstl _loop_on_err
1197: 1155 000166AD 31 0a jeql L355
1198: 1156 000166AF # force_loop = TRUE; /* set the force loop flag */
1199: 1157 000166AF 0d 01 effffff58a movl $1,_force_loop
1200: 1158 000166B6 # asm("brw _ldd_6_lp1");; /* and loop */
1201: 1159 000166B6 13 fe99 brw _ldd_6_lp1
1202: 1160 000166B9 # }; /* end of loop-on-error */
1203: 1161 000166B9 L355:
1204: 1162 000166B9 # } /* end of compare error */
1205: 1163 000166B9 # if( ++status_index >= 3 )
1206: 1164 000166B9 L344:
1207: 1165 000166B9 6d effffff581 incl _status_index
1208: 1166 000166BF 0d effffff57b 50 movl _status_index,r0
1209: 1167 000166C6 1d 50 03 cmpl r0,$3
1210: 1168 000166C9 91 06 jlss L356
1211: 1169 000166CB # status_index = 0; /* reset the status index */
1212: 1170 000166CB 4d effffff56f clrl _status_index
1213: 1171 000166D1 # } while( index++ < max_ldd_1_index );
1214: 1172 000166D1 L356:
1215: 1173 000166D1 L339:
1216: 1174 000166D1 0d effffff569 50 movl _index,r0
1217: 1175 000166D8 6d effffff562 incl _index
1218: 1176 000166DE 1d 50 effffff55b cmpl r0,_max_ldd_1_index
1219: 1177 000166E5 81 03 13 fe37 jlss L340
1220: 1178 000166EA L338:
1221: 1179 000166EA # } /* end of subtest 6 */
1222: 1180 000166EA 40 ret#2
1223: 1181 000166EB .set L334,0x0
1224: 1182 000166EB L336:
1225: 1183 000166EB 13 fe21 jbr L337
1226: 1184 000166EE .data
1227: 1185 00000c20 * .text
1228: 1186 000166EE .align 1
1229: 1187 000166EE .globl _print_ldd_data
1230: 1188 000166EE _print_ldd_data:
1231: 1189 000166EE 0000 .word L357
1232: 1190 000166F0 #
1233: 1191 000166F0 #
1234: 1192 000166F0 #
1235: 1193 000166F0 # /**************************************************************************
1236: 1194 000166F0 # *
1237: 1195 000166F0 # * PRINT THE DATA AND STORE RESULTS
1238: 1196 000166F0 # *
1239: 1197 000166F0 # * Acc loaded = xxxxxxxx xxxxxxxx, Acc stored = xxxxxxxx xxxxxxxx, index = xx
1240: 1198 000166F0 # **************************************************************************/
1241: 1199 000166F0 # print_ldd_data()
1242: 1200 000166F0 # {
1243: 1201 000166F0 11 61 jbr L359
1244: 1202 000166F2 L360:
1245: 1203 000166F2 # writes(" Acc loaded = ");
1246: 1204 000166F2 .data 1
1247: 1205 00000ee2 * L361:
1248: 1206 00000ee2 * 20416363206C6F61646564203 .ascii " Acc loaded = \0"
1249: D2000
1250: 1207 00000ef1 * .text
1251: 1208 000166F2 dd 8f00000ee2 pushl $L361
1252: 1209 000166F8 fe 08 effffff541 callf $8,_writes
1253: 1210 000166FF # write32h( dbl_ld_acc.m );
1254: 1211 000166FF dd effffff53b pushl _dbl_ld_acc
1255: 1212 00016705 fe 08 effffff534 callf $8,_write32h
1256: 1213 0001670C # writec(' ');
1257: 1214 0001670C dd 20 pushl $32
1258: 1215 0001670E fe 08 effffff52b callf $8,_writec
1259: 1216 00016715 # write32h( dbl_ld_acc.l );
1260: 1217 00016715 dd effffff529 pushl _dbl_ld_acc+4
1261: 1218 0001671B fe 08 effffff51e callf $8,_write32h
1262: 1219 00016722 # writes(", Acc stored = ");
1263: 1220 00016722 .data 1
1264: 1221 00000ef1 * L362:
1265: 1222 00000ef1 * 2C20204163632073746F72656 .ascii ", Acc stored = \0"
1266: 4203D2000
1267: 1223 00000f02 * .text
1268: 1224 00016722 dd 8f00000ef1 pushl $L362
1269: 1225 00016728 fe 08 effffff511 callf $8,_writes
1270: 1226 0001672F # write32h( dbl_st_acc.m );
1271: 1227 0001672F dd effffff50b pushl _dbl_st_acc
1272: 1228 00016735 fe 08 effffff504 callf $8,_write32h
1273: 1229 0001673C # writec(' ');
1274: 1230 0001673C dd 20 pushl $32
1275: 1231 0001673E fe 08 effffff4fb callf $8,_writec
1276: 1232 00016745 # write32h( dbl_st_acc.l );
1277: 1233 00016745 dd effffff4f9 pushl _dbl_st_acc+4
1278: 1234 0001674B fe 08 effffff4ee callf $8,_write32h
1279: 1235 00016752 # }
1280: 1236 00016752 40 ret#2
1281: 1237 00016753 .set L357,0x0
1282: 1238 00016753 L359:
1283: 1239 00016753 11 9d jbr L360
1284: 1240 00016755 .data
1285: 1241 00000c20 * .text
1286: 1242 00016755 00 .align 1
1287: 1243 00016756 .globl _ldd_er_halt
1288: 1244 00016756 _ldd_er_halt:
1289: 1245 00016756 0000 .word L363
1290: 1246 00016758 #
1291: 1247 00016758 #
1292: 1248 00016758 #
1293: 1249 00016758 # /**************************************************************************
1294: 1250 00016758 # *
1295: 1251 00016758 # * HALT ON ERROR ROUTINE
1296: 1252 00016758 # *
1297: 1253 00016758 # **************************************************************************/
1298: 1254 00016758 # ldd_er_halt( halt_code )
1299: 1255 00016758 # int halt_code;
1300: 1256 00016758 # {
1301: 1257 00016758 13 00ff jbr L365
1302: 1258 0001675B L366:
1303: 1259 0001675B # sgl_value_1 = dbl_ld_acc.m;
1304: 1260 0001675B 0d effffff4df effffff4da movl _dbl_ld_acc,_sgl_value_1
1305: 1261 00016766 # sgl_value_2 = dbl_ld_acc.l;
1306: 1262 00016766 0d effffff4d8 effffff4cf movl _dbl_ld_acc+4,_sgl_value_2
1307: 1263 00016771 # sgl_value_3 = dbl_st_acc.m;
1308: 1264 00016771 0d effffff4c9 effffff4c4 movl _dbl_st_acc,_sgl_value_3
1309: 1265 0001677C # sgl_value_4 = dbl_st_acc.l;
1310: 1266 0001677C 0d effffff4c2 effffff4b9 movl _dbl_st_acc+4,_sgl_value_4
1311: 1267 00016787 # sgl_dummy1 = halt_code; /* get the error type */
1312: 1268 00016787 0d ad04 effffff4b1 movl 4(fp),_sgl_dummy1
1313: 1269 0001678F # asm("movl _test_no,r0"); /* r0 = test number */
1314: 1270 0001678F 0d effffff4ab 50 movl _test_no,r0
1315: 1271 00016796 # asm("movl _subtest,r1"); /* r1 = subtest number */
1316: 1272 00016796 0d effffff4a4 51 movl _subtest,r1
1317: 1273 0001679D # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1318: 1274 0001679D 0d effffff49d 52 movl _sgl_dummy1,r2
1319: 1275 000167A4 # asm("movl _cycle,r3"); /* r3 = cycle count */
1320: 1276 000167A4 0d effffff496 53 movl _cycle,r3
1321: 1277 000167AB # asm("movl _sgl_value_1,r4"); /* r4 = MS operand */
1322: 1278 000167AB 0d effffff48f 54 movl _sgl_value_1,r4
1323: 1279 000167B2 # asm("movl _sgl_value_2,r5"); /* r5 = LS operand */
1324: 1280 000167B2 0d effffff488 55 movl _sgl_value_2,r5
1325: 1281 000167B9 # asm("movl _sgl_value_3,r6"); /* r6 = MS actual value */
1326: 1282 000167B9 0d effffff481 56 movl _sgl_value_3,r6
1327: 1283 000167C0 # asm("movl _sgl_value_4,r7"); /* r7 = LS actual value */
1328: 1284 000167C0 0d effffff47a 57 movl _sgl_value_4,r7
1329: 1285 000167C7 # if( halt_code == BAD_ACC_HLT ) {
1330: 1286 000167C7 1d ad04 01 cmpl 4(fp),$1
1331: 1287 000167CB 21 2d jneq L367
1332: 1288 000167CD # sgl_value_1 = dbl_expected.m;
1333: 1289 000167CD 0d effffff46d effffff468 movl _dbl_expected,_sgl_value_1
1334: 1290 000167D8 # sgl_value_2 = dbl_expected.l;
1335: 1291 000167D8 0d effffff466 effffff45d movl _dbl_expected+4,_sgl_value_2
1336: 1292 000167E3 # asm("movl _sgl_value_1,r8"); /* r8 = MS expected */
1337: 1293 000167E3 0d effffff457 58 movl _sgl_value_1,r8
1338: 1294 000167EA # asm("movl _sgl_value_2,r9"); /* r9 = LS expected */
1339: 1295 000167EA 0d effffff450 59 movl _sgl_value_2,r9
1340: 1296 000167F1 # asm("movl _index,r10"); /* r10 = data index */
1341: 1297 000167F1 0d effffff449 5a movl _index,r10
1342: 1298 000167F8 # } else
1343: 1299 000167F8 11 5e jbr L368
1344: 1300 000167FA L367:
1345: 1301 000167FA # if( halt_code == BAD_REG_HLT ) {
1346: 1302 000167FA 1d ad04 02 cmpl 4(fp),$2
1347: 1303 000167FE 21 3d jneq L369
1348: 1304 00016800 # sgl_dummy1 = load_regs[index2];
1349: 1305 00016800 0d effffff43a 50 movl _index2,r0
1350: 1306 00016807 0d 40effffff432 movl _load_regs[r0],_sgl_dummy1
1351: effffff42d
1352: 1307 00016813 # sgl_dummy2 = store_regs[index2];
1353: 1308 00016813 0d effffff427 50 movl _index2,r0
1354: 1309 0001681A 0d 40effffff41f movl _store_regs[r0],_sgl_dummy2
1355: effffff41a
1356: 1310 00016826 # asm("movl _index2,r8"); /* r8 = bad register # */
1357: 1311 00016826 0d effffff414 58 movl _index2,r8
1358: 1312 0001682D # asm("movl _sgl_dummy2,r9"); /* r9 = actual value */
1359: 1313 0001682D 0d effffff40d 59 movl _sgl_dummy2,r9
1360: 1314 00016834 # asm("movl _sgl_dummy1,r10"); /* r10 = expected value */
1361: 1315 00016834 0d effffff406 5a movl _sgl_dummy1,r10
1362: 1316 0001683B # } else
1363: 1317 0001683B 11 1b jbr L370
1364: 1318 0001683D L369:
1365: 1319 0001683D # if( halt_code == BAD_PSL_HLT ) {
1366: 1320 0001683D 1d ad04 03 cmpl 4(fp),$3
1367: 1321 00016841 21 15 jneq L371
1368: 1322 00016843 # asm("movl _init_psl,r8"); /* r8 = initial PSL */
1369: 1323 00016843 0d effffff3f7 58 movl _init_psl,r8
1370: 1324 0001684A # asm("movl _psl_val,r9"); /* r9 = final PSL */
1371: 1325 0001684A 0d effffff3f0 59 movl _psl_val,r9
1372: 1326 00016851 # asm("movl _exp_psl,r10"); /* r10 = expected PSL */
1373: 1327 00016851 0d effffff3e9 5a movl _exp_psl,r10
1374: 1328 00016858 # };
1375: 1329 00016858 L371:
1376: 1330 00016858 L370:
1377: 1331 00016858 L368:
1378: 1332 00016858 # asm("halt"); /* HALT ... */
1379: 1333 00016858 00 halt
1380: 1334 00016859 # }
1381: 1335 00016859 40 ret#2
1382: 1336 0001685A .set L363,0x0
1383: 1337 0001685A L365:
1384: 1338 0001685A 13 fefe jbr L366
1385: 1339 0001685D .data
1386: 1339 0002C49D .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.