|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 000008ac * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _lnd
6: 6 00000000 _lnd:
7: 7 00019D00 0000 .word L215
8: 8 00019D02 #
9: 9 00019D02 # #include "fpp_defs.h"
10: 10 00019D02 #
11: 11 00019D02 #
12: 12 00019D02 # /*****************************************************************************
13: 13 00019D02 # *
14: 14 00019D02 # * LND - DOUBLE PRECISION FLOATING POINT LOAD_NEGATE TEST
15: 15 00019D02 # *
16: 16 00019D02 # *****************************************************************************/
17: 17 00019D02 # lnd()
18: 18 00019D02 # {
19: 19 00019D02 11 41 jbr L217
20: 20 00019D04 L218:
21: 21 00019D04 # asm(".globl _lnd_t");
22: 22 00019D04 .globl _lnd_t
23: 23 00019D04 # asm("_lnd_t:"); /* entry address */
24: 24 00019D04 _lnd_t:
25: 25 00019D04 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26: 26 00019D04 1d effffffff6 01 cmpl _cycle,$1
27: 27 00019D0B 21 15 jneq L219
28: 28 00019D0D 5d efffffffed tstl _prt_hdrs
29: 29 00019D13 31 0d jeql L219
30: 30 00019D15 # writes(" LND");
31: 31 00019D15 .data 1
32: 32 000008ac * L221:
33: 33 000008ac * 204C4E4400 .ascii " LND\0"
34: 34 000008b1 * .text
35: 35 00019D15 dd 8f000008ac pushl $L221
36: 36 00019D1B fe 08 efffffffde callf $8,_writes
37: 37 00019D22 # lnd_1(); /* load through a register */
38: 38 00019D22 L219:
39: 39 00019D22 fe 04 ef0000001f callf $4,_lnd_1
40: 40 00019D29 # lnd_2(); /* load through the cache */
41: 41 00019D29 fe 04 ef000001f0 callf $4,_lnd_2
42: 42 00019D30 # lnd_3(); /* register stability */
43: 43 00019D30 fe 04 ef00000373 callf $4,_lnd_3
44: 44 00019D37 # lnd_4(); /* PSL stability test */
45: 45 00019D37 fe 04 ef0000053c callf $4,_lnd_4
46: 46 00019D3E # asm("jmp *return"); /* return to the test monitor */
47: 47 00019D3E 71 ffffffffbc jmp *return
48: 48 00019D44 # }
49: 49 00019D44 40 ret#2
50: 50 00019D45 .set L215,0x0
51: 51 00019D45 L217:
52: 52 00019D45 11 bd jbr L218
53: 53 00019D47 .data
54: 54 000008ac * .text
55: 55 00019D47 00 .align 1
56: 56 00019D48 .globl _lnd_1
57: 57 00019D48 _lnd_1:
58: 58 00019D48 0000 .word L226
59: 59 00019D4A #
60: 60 00019D4A #
61: 61 00019D4A #
62: 62 00019D4A # /************************************************************************
63: 63 00019D4A # *
64: 64 00019D4A # * SUBTEST 1 - load_negate through a register
65: 65 00019D4A # *
66: 66 00019D4A # ************************************************************************/
67: 67 00019D4A # lnd_1()
68: 68 00019D4A # {
69: 69 00019D4A 13 01cf jbr L228
70: 70 00019D4D L229:
71: 71 00019D4D # force_loop = FALSE;
72: 72 00019D4D 4d efffffffad clrl _force_loop
73: 73 00019D53 # subtest = 1;
74: 74 00019D53 0d 01 efffffffa6 movl $1,_subtest
75: 75 00019D5A # for( index = 0; index < max_lnd_1_index; index++ ) {
76: 76 00019D5A 4d efffffffa0 clrl _index
77: 77 00019D60 L232:
78: 78 00019D60 1d efffffff9a efffffff95 cmpl _index,_max_lnd_1_index
79: 79 00019D6B 91 03 13 01ab jgeq L231
80: 80 00019D70 # sgl_value_1 = lnd_1_data[index].ld.m; /* get operands MSW */
81: 81 00019D70 0d efffffff8a 50 movl _index,r0
82: 82 00019D77 48 04 50 50 shll $4,r0,r0
83: 83 00019D7B 0d e000000000 efffffff7a movl _lnd_1_data(r0),_sgl_value_1
84: 84 00019D86 # sgl_value_2 = lnd_1_data[index].ld.l; /* get operands LSW */
85: 85 00019D86 0d efffffff74 50 movl _index,r0
86: 86 00019D8D 48 04 50 50 shll $4,r0,r0
87: 87 00019D91 0d e000000004 efffffff64 movl _lnd_1_data+4(r0),_sgl_value_2
88: 88 00019D9C # dbl_expected = lnd_1_data[index].exp; /* get expected result */
89: 89 00019D9C 48 04 efffffff5d 50 shll $4,_index,r0
90: 90 00019DA4 0c 8f00000008 50 addl2 $_lnd_1_data+8,r0
91: 91 00019DAB 0d a004 efffffff51 movl 4(r0),_dbl_expected+4
92: 92 00019DB3 0d 60 efffffff46 movl (r0),_dbl_expected
93: 93 00019DBA # dbl_ld_acc.m = sgl_value_1;
94: 94 00019DBA 0d efffffff40 efffffff3b movl _sgl_value_1,_dbl_ld_acc
95: 95 00019DC5 # dbl_ld_acc.l = sgl_value_2;
96: 96 00019DC5 0d efffffff35 efffffff34 movl _sgl_value_2,_dbl_ld_acc+4
97: 97 00019DD0 # /*
98: 98 00019DD0 # * If LOOP ON ERROR is set, this is the loop for this subtest.
99: 99 00019DD0 # * The force loop flag is set after the first error.
100: 100 00019DD0 # */
101: 101 00019DD0 # asm("_lnd_1_lp1:");
102: 102 00019DD0 _lnd_1_lp1:
103: 103 00019DD0 # asm("movl _sgl_value_1,r4"); /* put the value to negate */
104: 104 00019DD0 0d efffffff2a 54 movl _sgl_value_1,r4
105: 105 00019DD7 # asm("movl _sgl_value_2,r5"); /* in r6 and r7 */
106: 106 00019DD7 0d efffffff23 55 movl _sgl_value_2,r5
107: 107 00019DDE # asm("lnd r4"); /* load and negate value */
108: 108 00019DDE 17 54 lnd r4
109: 109 00019DE0 # asm("std r6"); /* store the result in r6 */
110: 110 00019DE0 27 56 std r6
111: 111 00019DE2 # if( force_loop ) /* and r7 */
112: 112 00019DE2 5d efffffff18 tstl _force_loop
113: 113 00019DE8 31 02 jeql L233
114: 114 00019DEA # asm("brb _lnd_1_lp1");; /* loop on the error */
115: 115 00019DEA 11 e4 brb _lnd_1_lp1
116: 116 00019DEC L233:
117: 117 00019DEC # /*
118: 118 00019DEC # * end error loop - test the results
119: 119 00019DEC # */
120: 120 00019DEC # asm("movl r6,_sgl_value_3"); /* move R6 data to cache */
121: 121 00019DEC 0d 56 efffffff0d movl r6,_sgl_value_3
122: 122 00019DF3 # asm("movl r7,_sgl_value_4"); /* move R7 data to cache */
123: 123 00019DF3 0d 57 efffffff06 movl r7,_sgl_value_4
124: 124 00019DFA # dbl_st_acc.m = sgl_value_3;
125: 125 00019DFA 0d efffffff00 effffffefb movl _sgl_value_3,_dbl_st_acc
126: 126 00019E05 # dbl_st_acc.l = sgl_value_4;
127: 127 00019E05 0d effffffef5 effffffef4 movl _sgl_value_4,_dbl_st_acc+4
128: 128 00019E10 # if( ( sgl_value_3 != dbl_expected.m ) ||/* COMPARE the values */
129: 129 00019E10 # ( sgl_value_4 != dbl_expected.l ) ){
130: 130 00019E10 1d effffffeea effffffee5 cmpl _sgl_value_3,_dbl_expected
131: 131 00019E1B 21 10 jneq L9999
132: 132 00019E1D 1d effffffedd effffffedc cmpl _sgl_value_4,_dbl_expected+4
133: 133 00019E28 21 03 13 00e5 jeql L234
134: 134 00019E2D L9999:
135: 135 00019E2D # errcnt++; /* bump the error count */
136: 136 00019E2D 6d effffffecd incl _errcnt
137: 137 00019E33 # if( prt_error ) {
138: 138 00019E33 5d effffffec7 tstl _prt_error
139: 139 00019E39 21 03 13 00b1 jeql L235
140: 140 00019E3E # writes(" \n"); /* start a new print line */
141: 141 00019E3E .data 1
142: 142 000008b1 * L236:
143: 143 000008b1 * 200A00 .ascii " \12\0"
144: 144 000008b4 * .text
145: 145 00019E3E dd 8f000008b1 pushl $L236
146: 146 00019E44 fe 08 effffffeb5 callf $8,_writes
147: 147 00019E4B # writes("cycle: ");
148: 148 00019E4B .data 1
149: 149 000008b4 * L237:
150: 150 000008b4 * 6379636C653A2000 .ascii "cycle: \0"
151: 151 000008bc * .text
152: 152 00019E4B dd 8f000008b4 pushl $L237
153: 153 00019E51 fe 08 effffffea8 callf $8,_writes
154: 154 00019E58 # writed( cycle );
155: 155 00019E58 dd effffffea2 pushl _cycle
156: 156 00019E5E fe 08 effffffe9b callf $8,_writed
157: 157 00019E65 # writes(" LND test ");
158: 158 00019E65 .data 1
159: 159 000008bc * L239:
160: 160 000008bc * 20204C4E4420746573742000 .ascii " LND test \0"
161: 161 000008c8 * .text
162: 162 00019E65 dd 8f000008bc pushl $L239
163: 163 00019E6B fe 08 effffffe8e callf $8,_writes
164: 164 00019E72 # writed( test_no );
165: 165 00019E72 dd effffffe88 pushl _test_no
166: 166 00019E78 fe 08 effffffe81 callf $8,_writed
167: 167 00019E7F # writes(", subtest 1 (Reg. Data) - BAD FINAL ACC\n");
168: 168 00019E7F .data 1
169: 169 000008c8 * L240:
170: 170 000008c8 * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - BAD FINAL ACC\12\0"
171: 85265672E204461746129202D
172: 204241442046494E414C20414
173: 3430A00
174: 171 000008f1 * .text
175: 172 00019E7F dd 8f000008c8 pushl $L240
176: 173 00019E85 fe 08 effffffe74 callf $8,_writes
177: 174 00019E8C # print_lnd_data();
178: 175 00019E8C fe 04 ef000005a9 callf $4,_print_lnd_data
179: 176 00019E93 # writes(", index = ");
180: 177 00019E93 .data 1
181: 178 000008f1 * L242:
182: 179 000008f1 * 2C202020696E646578203D200 .ascii ", index = \0"
183: 0
184: 180 000008fe * .text
185: 181 00019E93 dd 8f000008f1 pushl $L242
186: 182 00019E99 fe 08 effffffe60 callf $8,_writes
187: 183 00019EA0 # writed( index );
188: 184 00019EA0 dd effffffe5a pushl _index
189: 185 00019EA6 fe 08 effffffe53 callf $8,_writed
190: 186 00019EAD # writec('\n');
191: 187 00019EAD dd 0a pushl $10
192: 188 00019EAF fe 08 effffffe4a callf $8,_writec
193: 189 00019EB6 # writes(" Acc expected = ");
194: 190 00019EB6 .data 1
195: 191 000008fe * L244:
196: 192 000008fe * 2020202020202020202020202 .ascii " Acc expected = \0"
197: 0202020202020202020202020
198: 2020202020202020416363206
199: 578706563746564203D2000
200: 193 0000092f * .text
201: 194 00019EB6 dd 8f000008fe pushl $L244
202: 195 00019EBC fe 08 effffffe3d callf $8,_writes
203: 196 00019EC3 # write32h( dbl_expected.m );
204: 197 00019EC3 dd effffffe37 pushl _dbl_expected
205: 198 00019EC9 fe 08 effffffe30 callf $8,_write32h
206: 199 00019ED0 # writec(' ');
207: 200 00019ED0 dd 20 pushl $32
208: 201 00019ED2 fe 08 effffffe27 callf $8,_writec
209: 202 00019ED9 # writes( dbl_expected.l );
210: 203 00019ED9 dd effffffe25 pushl _dbl_expected+4
211: 204 00019EDF fe 08 effffffe1a callf $8,_writes
212: 205 00019EE6 # writec('\n');
213: 206 00019EE6 dd 0a pushl $10
214: 207 00019EE8 fe 08 effffffe11 callf $8,_writec
215: 208 00019EEF # }
216: 209 00019EEF # if( halt_flg )
217: 210 00019EEF L235:
218: 211 00019EEF 5d effffffe0b tstl _halt_flg
219: 212 00019EF5 31 09 jeql L246
220: 213 00019EF7 # lnd_er_halt( BAD_ACC_HLT ); /* halt on the error */
221: 214 00019EF7 dd 01 pushl $1
222: 215 00019EF9 fe 08 ef000005a4 callf $8,_lnd_er_halt
223: 216 00019F00 # if( loop_on_err ) {
224: 217 00019F00 L246:
225: 218 00019F00 5d effffffdfa tstl _loop_on_err
226: 219 00019F06 31 0a jeql L248
227: 220 00019F08 # force_loop = TRUE; /* set the force loop flag */
228: 221 00019F08 0d 01 effffffdf1 movl $1,_force_loop
229: 222 00019F0F # asm("brw _lnd_1_lp1");; /* and loop on the error */
230: 223 00019F0F 13 febe brw _lnd_1_lp1
231: 224 00019F12 # } /* end of loop on error */
232: 225 00019F12 # } /* end of compare error */
233: 226 00019F12 L248:
234: 227 00019F12 # } /* end of WHILE loop */
235: 228 00019F12 L234:
236: 229 00019F12 L230:
237: 230 00019F12 6d effffffde8 incl _index
238: 231 00019F18 13 fe45 jbr L232
239: 232 00019F1B L231:
240: 233 00019F1B # } /* end of subtest 1 */
241: 234 00019F1B 40 ret#2
242: 235 00019F1C .set L226,0x0
243: 236 00019F1C L228:
244: 237 00019F1C 13 fe2e jbr L229
245: 238 00019F1F .data
246: 239 000008ac * .text
247: 240 00019F1F 00 .align 1
248: 241 00019F20 .globl _lnd_2
249: 242 00019F20 _lnd_2:
250: 243 00019F20 0000 .word L249
251: 244 00019F22 #
252: 245 00019F22 #
253: 246 00019F22 #
254: 247 00019F22 # /************************************************************************
255: 248 00019F22 # *
256: 249 00019F22 # * SUBTEST 2 - load_negate through memory
257: 250 00019F22 # *
258: 251 00019F22 # ************************************************************************/
259: 252 00019F22 # lnd_2()
260: 253 00019F22 # {
261: 254 00019F22 13 0181 jbr L251
262: 255 00019F25 L252:
263: 256 00019F25 # force_loop = FALSE;
264: 257 00019F25 4d effffffdd5 clrl _force_loop
265: 258 00019F2B # subtest = 2;
266: 259 00019F2B 0d 02 effffffdce movl $2,_subtest
267: 260 00019F32 # for( index = 0; index < max_lnd_1_index; index++ ) {
268: 261 00019F32 4d effffffdc8 clrl _index
269: 262 00019F38 L255:
270: 263 00019F38 1d effffffdc2 effffffdbd cmpl _index,_max_lnd_1_index
271: 264 00019F43 91 03 13 015d jgeq L254
272: 265 00019F48 # dbl_ld_acc = lnd_1_data[index].ld; /* get value to negate */
273: 266 00019F48 48 04 effffffdb1 50 shll $4,_index,r0
274: 267 00019F50 0c 8f00000000 50 addl2 $_lnd_1_data,r0
275: 268 00019F57 0d a004 effffffda5 movl 4(r0),_dbl_ld_acc+4
276: 269 00019F5F 0d 60 effffffd9a movl (r0),_dbl_ld_acc
277: 270 00019F66 # dbl_expected = lnd_1_data[index].exp; /* get expected result */
278: 271 00019F66 48 04 effffffd93 50 shll $4,_index,r0
279: 272 00019F6E 0c 8f00000008 50 addl2 $_lnd_1_data+8,r0
280: 273 00019F75 0d a004 effffffd87 movl 4(r0),_dbl_expected+4
281: 274 00019F7D 0d 60 effffffd7c movl (r0),_dbl_expected
282: 275 00019F84 # /*
283: 276 00019F84 # * If LOOP ON ERROR is set, this is the loop for this subtest.
284: 277 00019F84 # * The force loop flag is set after the first error.
285: 278 00019F84 # */
286: 279 00019F84 # asm("_lnd_2_lp1:");
287: 280 00019F84 _lnd_2_lp1:
288: 281 00019F84 # asm("lnd _dbl_ld_acc"); /* load and negate the value */
289: 282 00019F84 17 effffffd76 lnd _dbl_ld_acc
290: 283 00019F8A # asm("std _dbl_st_acc"); /* store the result */
291: 284 00019F8A 27 effffffd70 std _dbl_st_acc
292: 285 00019F90 # if( force_loop )
293: 286 00019F90 5d effffffd6a tstl _force_loop
294: 287 00019F96 31 02 jeql L256
295: 288 00019F98 # asm("brb _lnd_2_lp1");; /* loop on the error */
296: 289 00019F98 11 ea brb _lnd_2_lp1
297: 290 00019F9A L256:
298: 291 00019F9A # /*
299: 292 00019F9A # * end error loop - test the results
300: 293 00019F9A # */
301: 294 00019F9A # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the final & */
302: 295 00019F9A # (dbl_st_acc.l != dbl_expected.l) ) { /* the expected values */
303: 296 00019F9A 1d effffffd60 effffffd5b cmpl _dbl_st_acc,_dbl_expected
304: 297 00019FA5 21 10 jneq L9998
305: 298 00019FA7 1d effffffd57 effffffd52 cmpl _dbl_st_acc+4,_dbl_expected+4
306: 299 00019FB2 21 03 13 00e5 jeql L257
307: 300 00019FB7 L9998:
308: 301 00019FB7 # errcnt++; /* bump the error count */
309: 302 00019FB7 6d effffffd43 incl _errcnt
310: 303 00019FBD # if( prt_error ) {
311: 304 00019FBD 5d effffffd3d tstl _prt_error
312: 305 00019FC3 21 03 13 00b1 jeql L258
313: 306 00019FC8 # writes(" \n"); /* start a new print line */
314: 307 00019FC8 .data 1
315: 308 0000092f * L259:
316: 309 0000092f * 200A00 .ascii " \12\0"
317: 310 00000932 * .text
318: 311 00019FC8 dd 8f0000092f pushl $L259
319: 312 00019FCE fe 08 effffffd2b callf $8,_writes
320: 313 00019FD5 # writes("cycle: ");
321: 314 00019FD5 .data 1
322: 315 00000932 * L260:
323: 316 00000932 * 6379636C653A2000 .ascii "cycle: \0"
324: 317 0000093a * .text
325: 318 00019FD5 dd 8f00000932 pushl $L260
326: 319 00019FDB fe 08 effffffd1e callf $8,_writes
327: 320 00019FE2 # writed( cycle );
328: 321 00019FE2 dd effffffd18 pushl _cycle
329: 322 00019FE8 fe 08 effffffd11 callf $8,_writed
330: 323 00019FEF # writes(" LND test ");
331: 324 00019FEF .data 1
332: 325 0000093a * L261:
333: 326 0000093a * 20204C4E4420746573742000 .ascii " LND test \0"
334: 327 00000946 * .text
335: 328 00019FEF dd 8f0000093a pushl $L261
336: 329 00019FF5 fe 08 effffffd04 callf $8,_writes
337: 330 00019FFC # writed( test_no );
338: 331 00019FFC dd effffffcfe pushl _test_no
339: 332 0001A002 fe 08 effffffcf7 callf $8,_writed
340: 333 0001A009 # writes(", subtest 2 (Cache Data) - BAD FINAL ACC\n");
341: 334 0001A009 .data 1
342: 335 00000946 * L262:
343: 336 00000946 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - BAD FINAL ACC\12\0"
344: 8436163686520446174612920
345: 2D204241442046494E414C204
346: 143430A00
347: 337 00000970 * .text
348: 338 0001A009 dd 8f00000946 pushl $L262
349: 339 0001A00F fe 08 effffffcea callf $8,_writes
350: 340 0001A016 # print_lnd_data();
351: 341 0001A016 fe 04 ef0000041f callf $4,_print_lnd_data
352: 342 0001A01D # writes(", index = ");
353: 343 0001A01D .data 1
354: 344 00000970 * L263:
355: 345 00000970 * 2C202020696E646578203D200 .ascii ", index = \0"
356: 0
357: 346 0000097d * .text
358: 347 0001A01D dd 8f00000970 pushl $L263
359: 348 0001A023 fe 08 effffffcd6 callf $8,_writes
360: 349 0001A02A # writed( index );
361: 350 0001A02A dd effffffcd0 pushl _index
362: 351 0001A030 fe 08 effffffcc9 callf $8,_writed
363: 352 0001A037 # writec('\n');
364: 353 0001A037 dd 0a pushl $10
365: 354 0001A039 fe 08 effffffcc0 callf $8,_writec
366: 355 0001A040 # writes(" Acc expected = ");
367: 356 0001A040 .data 1
368: 357 0000097d * L264:
369: 358 0000097d * 2020202020202020202020202 .ascii " Acc expected = \0"
370: 0202020202020202020202020
371: 2020202020202020416363206
372: 578706563746564203D2000
373: 359 000009ae * .text
374: 360 0001A040 dd 8f0000097d pushl $L264
375: 361 0001A046 fe 08 effffffcb3 callf $8,_writes
376: 362 0001A04D # write32h( dbl_expected.m );
377: 363 0001A04D dd effffffcad pushl _dbl_expected
378: 364 0001A053 fe 08 effffffca6 callf $8,_write32h
379: 365 0001A05A # writec(' ');
380: 366 0001A05A dd 20 pushl $32
381: 367 0001A05C fe 08 effffffc9d callf $8,_writec
382: 368 0001A063 # writes( dbl_expected.l );
383: 369 0001A063 dd effffffc9b pushl _dbl_expected+4
384: 370 0001A069 fe 08 effffffc90 callf $8,_writes
385: 371 0001A070 # writec('\n');
386: 372 0001A070 dd 0a pushl $10
387: 373 0001A072 fe 08 effffffc87 callf $8,_writec
388: 374 0001A079 # }
389: 375 0001A079 # if( halt_flg )
390: 376 0001A079 L258:
391: 377 0001A079 5d effffffc81 tstl _halt_flg
392: 378 0001A07F 31 09 jeql L265
393: 379 0001A081 # lnd_er_halt( BAD_ACC_HLT ); /* halt on the error */
394: 380 0001A081 dd 01 pushl $1
395: 381 0001A083 fe 08 ef0000041a callf $8,_lnd_er_halt
396: 382 0001A08A # if( loop_on_err ) {
397: 383 0001A08A L265:
398: 384 0001A08A 5d effffffc70 tstl _loop_on_err
399: 385 0001A090 31 0a jeql L266
400: 386 0001A092 # force_loop = TRUE; /* set the force loop flag */
401: 387 0001A092 0d 01 effffffc67 movl $1,_force_loop
402: 388 0001A099 # asm("brw _lnd_2_lp1");; /* and loop on the error */
403: 389 0001A099 13 fee8 brw _lnd_2_lp1
404: 390 0001A09C # } /* end of loop on error */
405: 391 0001A09C # } /* end of compare error */
406: 392 0001A09C L266:
407: 393 0001A09C # } /* end of WHILE loop */
408: 394 0001A09C L257:
409: 395 0001A09C L253:
410: 396 0001A09C 6d effffffc5e incl _index
411: 397 0001A0A2 13 fe93 jbr L255
412: 398 0001A0A5 L254:
413: 399 0001A0A5 # } /* end of subtest 2 */
414: 400 0001A0A5 40 ret#2
415: 401 0001A0A6 .set L249,0x0
416: 402 0001A0A6 L251:
417: 403 0001A0A6 13 fe7c jbr L252
418: 404 0001A0A9 .data
419: 405 000008ac * .text
420: 406 0001A0A9 00 .align 1
421: 407 0001A0AA .globl _lnd_3
422: 408 0001A0AA _lnd_3:
423: 409 0001A0AA 0000 .word L267
424: 410 0001A0AC #
425: 411 0001A0AC #
426: 412 0001A0AC #
427: 413 0001A0AC # /************************************************************************
428: 414 0001A0AC # *
429: 415 0001A0AC # * SUBTEST 3 - Check for register corruption
430: 416 0001A0AC # *
431: 417 0001A0AC # ************************************************************************/
432: 418 0001A0AC # lnd_3()
433: 419 0001A0AC # {
434: 420 0001A0AC 13 01c8 jbr L269
435: 421 0001A0AF L270:
436: 422 0001A0AF # force_loop = FALSE; /* clear force_loop flg */
437: 423 0001A0AF 4d effffffc4b clrl _force_loop
438: 424 0001A0B5 # subtest = 3;
439: 425 0001A0B5 0d 03 effffffc44 movl $3,_subtest
440: 426 0001A0BC # fill_reg_buf( load_regs ); /* get patterns for regs */
441: 427 0001A0BC dd 8f00000000 pushl $_load_regs
442: 428 0001A0C2 fe 08 effffffc37 callf $8,_fill_reg_buf
443: 429 0001A0C9 # index = 0;
444: 430 0001A0C9 4d effffffc31 clrl _index
445: 431 0001A0CF # dbl_ld_acc = lnd_1_data[index].ld; /* get value to negate */
446: 432 0001A0CF 48 04 effffffc2a 50 shll $4,_index,r0
447: 433 0001A0D7 0c 8f00000000 50 addl2 $_lnd_1_data,r0
448: 434 0001A0DE 0d a004 effffffc1e movl 4(r0),_dbl_ld_acc+4
449: 435 0001A0E6 0d 60 effffffc13 movl (r0),_dbl_ld_acc
450: 436 0001A0ED # dbl_expected = lnd_1_data[index].exp; /* get expected result */
451: 437 0001A0ED 48 04 effffffc0c 50 shll $4,_index,r0
452: 438 0001A0F5 0c 8f00000008 50 addl2 $_lnd_1_data+8,r0
453: 439 0001A0FC 0d a004 effffffc00 movl 4(r0),_dbl_expected+4
454: 440 0001A104 0d 60 effffffbf5 movl (r0),_dbl_expected
455: 441 0001A10B # /*
456: 442 0001A10B # * If LOOP ON ERROR is set, this is the loop for this subtest.
457: 443 0001A10B # * The force loop flag is set after the first error.
458: 444 0001A10B # */
459: 445 0001A10B # asm("_lnd_3_lp1:");
460: 446 0001A10B _lnd_3_lp1:
461: 447 0001A10B # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
462: 448 0001A10B ab 891fff effffffbec loadr $0x1fff,_load_regs
463: 449 0001A114 # asm("nop");
464: 450 0001A114 10 nop
465: 451 0001A115 # asm("lnd _dbl_ld_acc"); /* load and negate the value */
466: 452 0001A115 17 effffffbe5 lnd _dbl_ld_acc
467: 453 0001A11B # asm("nop");
468: 454 0001A11B 10 nop
469: 455 0001A11C # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
470: 456 0001A11C bb 891fff effffffbdb storer $0x1fff,_store_regs
471: 457 0001A125 # asm("stf _dbl_st_acc"); /* save the accumulator */
472: 458 0001A125 26 effffffbd5 stf _dbl_st_acc
473: 459 0001A12B # if( force_loop )
474: 460 0001A12B 5d effffffbcf tstl _force_loop
475: 461 0001A131 31 02 jeql L272
476: 462 0001A133 # asm("brb _lnd_3_lp1");; /* loop on the error */
477: 463 0001A133 11 d6 brb _lnd_3_lp1
478: 464 0001A135 L272:
479: 465 0001A135 # /*
480: 466 0001A135 # * Now compare the stored register values to those that were loaded
481: 467 0001A135 # */
482: 468 0001A135 # index2 = 0;
483: 469 0001A135 4d effffffbc5 clrl _index2
484: 470 0001A13B # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
485: 471 0001A13B L273:
486: 472 0001A13B 0d effffffbbf 50 movl _index2,r0
487: 473 0001A142 0d effffffbb8 51 movl _index2,r1
488: 474 0001A149 1d 40effffffbb0 cmpl _load_regs[r0],_store_regs[r1]
489: 41effffffbaa
490: 475 0001A156 21 11 jneq L274
491: 476 0001A158 1d effffffba2 0d cmpl _index2,$13
492: 477 0001A15F 81 08 jgeq L274
493: 478 0001A161 # index2++; /* check reg values */
494: 479 0001A161 6d effffffb99 incl _index2
495: 480 0001A167 11 d2 jbr L273
496: 481 0001A169 L274:
497: 482 0001A169 # if( index2 < 13 ) { /* error if index2 < 13 */
498: 483 0001A169 1d effffffb91 0d cmpl _index2,$13
499: 484 0001A170 91 03 13 0101 jgeq L275
500: 485 0001A175 # errcnt++; /* bump the error count */
501: 486 0001A175 6d effffffb85 incl _errcnt
502: 487 0001A17B # if( prt_error ) {
503: 488 0001A17B 5d effffffb7f tstl _prt_error
504: 489 0001A181 21 03 13 00cd jeql L276
505: 490 0001A186 # writes(" \n"); /* start a new print line */
506: 491 0001A186 .data 1
507: 492 000009ae * L277:
508: 493 000009ae * 200A00 .ascii " \12\0"
509: 494 000009b1 * .text
510: 495 0001A186 dd 8f000009ae pushl $L277
511: 496 0001A18C fe 08 effffffb6d callf $8,_writes
512: 497 0001A193 # writes("cycle: ");
513: 498 0001A193 .data 1
514: 499 000009b1 * L278:
515: 500 000009b1 * 6379636C653A2000 .ascii "cycle: \0"
516: 501 000009b9 * .text
517: 502 0001A193 dd 8f000009b1 pushl $L278
518: 503 0001A199 fe 08 effffffb60 callf $8,_writes
519: 504 0001A1A0 # writed( cycle );
520: 505 0001A1A0 dd effffffb5a pushl _cycle
521: 506 0001A1A6 fe 08 effffffb53 callf $8,_writed
522: 507 0001A1AD # writes(" LND test ");
523: 508 0001A1AD .data 1
524: 509 000009b9 * L279:
525: 510 000009b9 * 20204C4E4420746573742000 .ascii " LND test \0"
526: 511 000009c5 * .text
527: 512 0001A1AD dd 8f000009b9 pushl $L279
528: 513 0001A1B3 fe 08 effffffb46 callf $8,_writes
529: 514 0001A1BA # writed( test_no );
530: 515 0001A1BA dd effffffb40 pushl _test_no
531: 516 0001A1C0 fe 08 effffffb39 callf $8,_writed
532: 517 0001A1C7 # writes(", subtest 3 - A REGISTER WAS CHANGED\n");
533: 518 0001A1C7 .data 1
534: 519 000009c5 * L280:
535: 520 000009c5 * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS CHANGED\12\0"
536: D204120524547495354455220
537: 574153204348414E4745440A0
538: 0
539: 521 000009eb * .text
540: 522 0001A1C7 dd 8f000009c5 pushl $L280
541: 523 0001A1CD fe 08 effffffb2c callf $8,_writes
542: 524 0001A1D4 # print_lnd_data(); /* print the operands */
543: 525 0001A1D4 fe 04 ef00000261 callf $4,_print_lnd_data
544: 526 0001A1DB # writes("\n");
545: 527 0001A1DB .data 1
546: 528 000009eb * L281:
547: 529 000009eb * 0A00 .ascii "\12\0"
548: 530 000009ed * .text
549: 531 0001A1DB dd 8f000009eb pushl $L281
550: 532 0001A1E1 fe 08 effffffb18 callf $8,_writes
551: 533 0001A1E8 # writes("register "); /* print the information */
552: 534 0001A1E8 .data 1
553: 535 000009ed * L282:
554: 536 000009ed * 72656769737465722000 .ascii "register \0"
555: 537 000009f7 * .text
556: 538 0001A1E8 dd 8f000009ed pushl $L282
557: 539 0001A1EE fe 08 effffffb0b callf $8,_writes
558: 540 0001A1F5 # writed( index2 ); /* about the corrupted */
559: 541 0001A1F5 dd effffffb05 pushl _index2
560: 542 0001A1FB fe 08 effffffafe callf $8,_writed
561: 543 0001A202 # writes(" = "); /* register */
562: 544 0001A202 .data 1
563: 545 000009f7 * L283:
564: 546 000009f7 * 203D2000 .ascii " = \0"
565: 547 000009fb * .text
566: 548 0001A202 dd 8f000009f7 pushl $L283
567: 549 0001A208 fe 08 effffffaf1 callf $8,_writes
568: 550 0001A20F # write32h( store_regs[index2] );
569: 551 0001A20F 0d effffffaeb 50 movl _index2,r0
570: 552 0001A216 dd 40effffffae3 pushl _store_regs[r0]
571: 553 0001A21D fe 08 effffffadc callf $8,_write32h
572: 554 0001A224 # writes(", should be = ");
573: 555 0001A224 .data 1
574: 556 000009fb * L284:
575: 557 000009fb * 2C202073686F756C642062652 .ascii ", should be = \0"
576: 03D2000
577: 558 00000a0b * .text
578: 559 0001A224 dd 8f000009fb pushl $L284
579: 560 0001A22A fe 08 effffffacf callf $8,_writes
580: 561 0001A231 # write32h( load_regs[index2] );
581: 562 0001A231 0d effffffac9 50 movl _index2,r0
582: 563 0001A238 dd 40effffffac1 pushl _load_regs[r0]
583: 564 0001A23F fe 08 effffffaba callf $8,_write32h
584: 565 0001A246 # writes("\n");
585: 566 0001A246 .data 1
586: 567 00000a0b * L285:
587: 568 00000a0b * 0A00 .ascii "\12\0"
588: 569 00000a0d * .text
589: 570 0001A246 dd 8f00000a0b pushl $L285
590: 571 0001A24C fe 08 effffffaad callf $8,_writes
591: 572 0001A253 # }
592: 573 0001A253 # if( halt_flg )
593: 574 0001A253 L276:
594: 575 0001A253 5d effffffaa7 tstl _halt_flg
595: 576 0001A259 31 09 jeql L286
596: 577 0001A25B # lnd_er_halt( BAD_REG_HLT ); /* halt on the error */
597: 578 0001A25B dd 02 pushl $2
598: 579 0001A25D fe 08 ef00000240 callf $8,_lnd_er_halt
599: 580 0001A264 # if( loop_on_err ) {
600: 581 0001A264 L286:
601: 582 0001A264 5d effffffa96 tstl _loop_on_err
602: 583 0001A26A 31 0a jeql L287
603: 584 0001A26C # force_loop = TRUE; /* set the force loop flag */
604: 585 0001A26C 0d 01 effffffa8d movl $1,_force_loop
605: 586 0001A273 # asm("brw _lnd_3_lp1");; /* and loop on the error */
606: 587 0001A273 13 fe95 brw _lnd_3_lp1
607: 588 0001A276 # } /* end of loop on error */
608: 589 0001A276 # } /* end of register corruption error */
609: 590 0001A276 L287:
610: 591 0001A276 # } /* end of subtest 3 */
611: 592 0001A276 L275:
612: 593 0001A276 40 ret#2
613: 594 0001A277 .set L267,0x0
614: 595 0001A277 L269:
615: 596 0001A277 13 fe35 jbr L270
616: 597 0001A27A .data
617: 598 000008ac * .text
618: 599 0001A27A .align 1
619: 600 0001A27A .globl _lnd_4
620: 601 0001A27A _lnd_4:
621: 602 0001A27A 0000 .word L288
622: 603 0001A27C #
623: 604 0001A27C #
624: 605 0001A27C #
625: 606 0001A27C # /************************************************************************
626: 607 0001A27C # *
627: 608 0001A27C # * SUBTEST 4 - Check for PSL corruption
628: 609 0001A27C # *
629: 610 0001A27C # ************************************************************************/
630: 611 0001A27C # lnd_4()
631: 612 0001A27C # {
632: 613 0001A27C 13 01ba jbr L290
633: 614 0001A27F L291:
634: 615 0001A27F # force_loop = FALSE; /* clear force_loop flg */
635: 616 0001A27F 4d effffffa7b clrl _force_loop
636: 617 0001A285 # subtest = 4;
637: 618 0001A285 0d 04 effffffa74 movl $4,_subtest
638: 619 0001A28C # fill_reg_buf( load_regs ); /* get patterns for regs */
639: 620 0001A28C dd 8f00000000 pushl $_load_regs
640: 621 0001A292 fe 08 effffffa67 callf $8,_fill_reg_buf
641: 622 0001A299 # for( index = 0; index < 3; index++ ) {
642: 623 0001A299 4d effffffa61 clrl _index
643: 624 0001A29F L294:
644: 625 0001A29F 1d effffffa5b 03 cmpl _index,$3
645: 626 0001A2A6 91 03 13 018d jgeq L293
646: 627 0001A2AB # dbl_ld_acc = lnd_1_data[index].ld; /* get value to negate */
647: 628 0001A2AB 48 04 effffffa4e 50 shll $4,_index,r0
648: 629 0001A2B3 0c 8f00000000 50 addl2 $_lnd_1_data,r0
649: 630 0001A2BA 0d a004 effffffa42 movl 4(r0),_dbl_ld_acc+4
650: 631 0001A2C2 0d 60 effffffa37 movl (r0),_dbl_ld_acc
651: 632 0001A2C9 # dbl_expected = lnd_1_data[index].exp; /* get expected */
652: 633 0001A2C9 48 04 effffffa30 50 shll $4,_index,r0
653: 634 0001A2D1 0c 8f00000008 50 addl2 $_lnd_1_data+8,r0
654: 635 0001A2D8 0d a004 effffffa24 movl 4(r0),_dbl_expected+4
655: 636 0001A2E0 0d 60 effffffa19 movl (r0),_dbl_expected
656: 637 0001A2E7 # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
657: 638 0001A2E7 0d effffffa13 50 movl _status_index,r0
658: 639 0001A2EE 0d 40effffffa0b movl _status_array[r0],_sgl_dummy1
659: effffffa06
660: 640 0001A2FA # /*
661: 641 0001A2FA # * If LOOP ON ERROR is set, this is the loop for this subtest.
662: 642 0001A2FA # * The force loop flag is set after the first error.
663: 643 0001A2FA # */
664: 644 0001A2FA # asm("_lnd_4_lp1:");
665: 645 0001A2FA _lnd_4_lp1:
666: 646 0001A2FA # asm("tstl _sgl_dummy1"); /* set the PSL status */
667: 647 0001A2FA 5d effffffa00 tstl _sgl_dummy1
668: 648 0001A300 # asm("movpsl _init_psl"); /* save the initial PSL */
669: 649 0001A300 cd effffff9fa movpsl _init_psl
670: 650 0001A306 # asm("lnd _dbl_ld_acc"); /* load and negate the value */
671: 651 0001A306 17 effffff9f4 lnd _dbl_ld_acc
672: 652 0001A30C # asm("nop");
673: 653 0001A30C 10 nop
674: 654 0001A30D # asm("movpsl _psl_val"); /* save the final PSL */
675: 655 0001A30D cd effffff9ed movpsl _psl_val
676: 656 0001A313 # asm("stf _dbl_st_acc"); /* save the accumulator */
677: 657 0001A313 26 effffff9e7 stf _dbl_st_acc
678: 658 0001A319 # if( force_loop )
679: 659 0001A319 5d effffff9e1 tstl _force_loop
680: 660 0001A31F 31 02 jeql L295
681: 661 0001A321 # asm("brb _lnd_4_lp1");; /* loop on the error */
682: 662 0001A321 11 d7 brb _lnd_4_lp1
683: 663 0001A323 L295:
684: 664 0001A323 # /*
685: 665 0001A323 # * Now compare the final PSL to the initial PSL -they should be the same
686: 666 0001A323 # */
687: 667 0001A323 # exp_psl = init_psl;
688: 668 0001A323 0d effffff9d7 effffff9d2 movl _init_psl,_exp_psl
689: 669 0001A32E # if( psl_val != init_psl ) {
690: 670 0001A32E 1d effffff9cc effffff9c7 cmpl _psl_val,_init_psl
691: 671 0001A339 21 03 13 00f1 jeql L296
692: 672 0001A33E # errcnt++; /* bump the error count */
693: 673 0001A33E 6d effffff9bc incl _errcnt
694: 674 0001A344 # if( prt_error ) {
695: 675 0001A344 5d effffff9b6 tstl _prt_error
696: 676 0001A34A 21 03 13 00bd jeql L297
697: 677 0001A34F # writes(" \n"); /* start a new print line */
698: 678 0001A34F .data 1
699: 679 00000a0d * L298:
700: 680 00000a0d * 200A00 .ascii " \12\0"
701: 681 00000a10 * .text
702: 682 0001A34F dd 8f00000a0d pushl $L298
703: 683 0001A355 fe 08 effffff9a4 callf $8,_writes
704: 684 0001A35C # writes("cycle: ");
705: 685 0001A35C .data 1
706: 686 00000a10 * L299:
707: 687 00000a10 * 6379636C653A2000 .ascii "cycle: \0"
708: 688 00000a18 * .text
709: 689 0001A35C dd 8f00000a10 pushl $L299
710: 690 0001A362 fe 08 effffff997 callf $8,_writes
711: 691 0001A369 # writed( cycle );
712: 692 0001A369 dd effffff991 pushl _cycle
713: 693 0001A36F fe 08 effffff98a callf $8,_writed
714: 694 0001A376 # writes(" LND test ");
715: 695 0001A376 .data 1
716: 696 00000a18 * L300:
717: 697 00000a18 * 20204C4E4420746573742000 .ascii " LND test \0"
718: 698 00000a24 * .text
719: 699 0001A376 dd 8f00000a18 pushl $L300
720: 700 0001A37C fe 08 effffff97d callf $8,_writes
721: 701 0001A383 # writed( test_no );
722: 702 0001A383 dd effffff977 pushl _test_no
723: 703 0001A389 fe 08 effffff970 callf $8,_writed
724: 704 0001A390 # writes(", subtest 4 - INCORRECT FINAL PSL\n");
725: 705 0001A390 .data 1
726: 706 00000a24 * L301:
727: 707 00000a24 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
728: D20494E434F52524543542046
729: 494E414C2050534C0A00
730: 708 00000a47 * .text
731: 709 0001A390 dd 8f00000a24 pushl $L301
732: 710 0001A396 fe 08 effffff963 callf $8,_writes
733: 711 0001A39D # print_lnd_data(); /* print the operands */
734: 712 0001A39D fe 04 ef00000098 callf $4,_print_lnd_data
735: 713 0001A3A4 # writes("\n");
736: 714 0001A3A4 .data 1
737: 715 00000a47 * L302:
738: 716 00000a47 * 0A00 .ascii "\12\0"
739: 717 00000a49 * .text
740: 718 0001A3A4 dd 8f00000a47 pushl $L302
741: 719 0001A3AA fe 08 effffff94f callf $8,_writes
742: 720 0001A3B1 # writes("initial PSL = ");
743: 721 0001A3B1 .data 1
744: 722 00000a49 * L303:
745: 723 00000a49 * 696E697469616C2050534C203 .ascii "initial PSL = \0"
746: D2000
747: 724 00000a58 * .text
748: 725 0001A3B1 dd 8f00000a49 pushl $L303
749: 726 0001A3B7 fe 08 effffff942 callf $8,_writes
750: 727 0001A3BE # write32h( init_psl );
751: 728 0001A3BE dd effffff93c pushl _init_psl
752: 729 0001A3C4 fe 08 effffff935 callf $8,_write32h
753: 730 0001A3CB # writes(", final PSL = ");
754: 731 0001A3CB .data 1
755: 732 00000a58 * L304:
756: 733 00000a58 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
757: 03D2000
758: 734 00000a68 * .text
759: 735 0001A3CB dd 8f00000a58 pushl $L304
760: 736 0001A3D1 fe 08 effffff928 callf $8,_writes
761: 737 0001A3D8 # write32h( psl_val );
762: 738 0001A3D8 dd effffff922 pushl _psl_val
763: 739 0001A3DE fe 08 effffff91b callf $8,_write32h
764: 740 0001A3E5 # writes(", expected PSL = ");
765: 741 0001A3E5 .data 1
766: 742 00000a68 * L305:
767: 743 00000a68 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
768: 0534C203D2000
769: 744 00000a7b * .text
770: 745 0001A3E5 dd 8f00000a68 pushl $L305
771: 746 0001A3EB fe 08 effffff90e callf $8,_writes
772: 747 0001A3F2 # write32h( exp_psl );
773: 748 0001A3F2 dd effffff908 pushl _exp_psl
774: 749 0001A3F8 fe 08 effffff901 callf $8,_write32h
775: 750 0001A3FF # writes("\n");
776: 751 0001A3FF .data 1
777: 752 00000a7b * L306:
778: 753 00000a7b * 0A00 .ascii "\12\0"
779: 754 00000a7d * .text
780: 755 0001A3FF dd 8f00000a7b pushl $L306
781: 756 0001A405 fe 08 effffff8f4 callf $8,_writes
782: 757 0001A40C # }
783: 758 0001A40C # if( halt_flg )
784: 759 0001A40C L297:
785: 760 0001A40C 5d effffff8ee tstl _halt_flg
786: 761 0001A412 31 09 jeql L307
787: 762 0001A414 # lnd_er_halt( BAD_PSL_HLT ); /* halt on the error */
788: 763 0001A414 dd 03 pushl $3
789: 764 0001A416 fe 08 ef00000087 callf $8,_lnd_er_halt
790: 765 0001A41D # if( loop_on_err ) {
791: 766 0001A41D L307:
792: 767 0001A41D 5d effffff8dd tstl _loop_on_err
793: 768 0001A423 31 0a jeql L308
794: 769 0001A425 # force_loop = TRUE; /* set the force loop flag */
795: 770 0001A425 0d 01 effffff8d4 movl $1,_force_loop
796: 771 0001A42C # asm("brw _lnd_4_lp1");; /* and loop on the error */
797: 772 0001A42C 13 fecb brw _lnd_4_lp1
798: 773 0001A42F # } /* end of loop on error */
799: 774 0001A42F # } /* end of PSL corruption error */
800: 775 0001A42F L308:
801: 776 0001A42F # } /* end of WHILE loop */
802: 777 0001A42F L296:
803: 778 0001A42F L292:
804: 779 0001A42F 6d effffff8cb incl _index
805: 780 0001A435 13 fe67 jbr L294
806: 781 0001A438 L293:
807: 782 0001A438 # } /* end of subtest 4 */
808: 783 0001A438 40 ret#2
809: 784 0001A439 .set L288,0x0
810: 785 0001A439 L290:
811: 786 0001A439 13 fe43 jbr L291
812: 787 0001A43C .data
813: 788 000008ac * .text
814: 789 0001A43C .align 1
815: 790 0001A43C .globl _print_lnd_data
816: 791 0001A43C _print_lnd_data:
817: 792 0001A43C 0000 .word L309
818: 793 0001A43E #
819: 794 0001A43E #
820: 795 0001A43E #
821: 796 0001A43E # /**************************************************************************
822: 797 0001A43E # *
823: 798 0001A43E # * PRINT THE DATA AND STORE RESULTS
824: 799 0001A43E # *
825: 800 0001A43E # * Acc loaded = xxxxxxxx xxxxxxxx, Acc stored = xxxxxxxx xxxxxxxx, index = xx
826: 801 0001A43E # * Acc expected = xxxxxxxx xxxxxxxx
827: 802 0001A43E # **************************************************************************/
828: 803 0001A43E # print_lnd_data()
829: 804 0001A43E # {
830: 805 0001A43E 11 61 jbr L311
831: 806 0001A440 L312:
832: 807 0001A440 # writes(" Acc loaded = ");
833: 808 0001A440 .data 1
834: 809 00000a7d * L313:
835: 810 00000a7d * 20416363206C6F61646564203 .ascii " Acc loaded = \0"
836: D2000
837: 811 00000a8c * .text
838: 812 0001A440 dd 8f00000a7d pushl $L313
839: 813 0001A446 fe 08 effffff8b3 callf $8,_writes
840: 814 0001A44D # write32h( dbl_ld_acc.m );
841: 815 0001A44D dd effffff8ad pushl _dbl_ld_acc
842: 816 0001A453 fe 08 effffff8a6 callf $8,_write32h
843: 817 0001A45A # writec(' ');
844: 818 0001A45A dd 20 pushl $32
845: 819 0001A45C fe 08 effffff89d callf $8,_writec
846: 820 0001A463 # write32h( dbl_ld_acc.l );
847: 821 0001A463 dd effffff89b pushl _dbl_ld_acc+4
848: 822 0001A469 fe 08 effffff890 callf $8,_write32h
849: 823 0001A470 # writes(", Acc. stored = ");
850: 824 0001A470 .data 1
851: 825 00000a8c * L314:
852: 826 00000a8c * 2C20204163632E2073746F726 .ascii ", Acc. stored = \0"
853: 564203D2000
854: 827 00000a9e * .text
855: 828 0001A470 dd 8f00000a8c pushl $L314
856: 829 0001A476 fe 08 effffff883 callf $8,_writes
857: 830 0001A47D # write32h( dbl_st_acc.m );
858: 831 0001A47D dd effffff87d pushl _dbl_st_acc
859: 832 0001A483 fe 08 effffff876 callf $8,_write32h
860: 833 0001A48A # writec(' ');
861: 834 0001A48A dd 20 pushl $32
862: 835 0001A48C fe 08 effffff86d callf $8,_writec
863: 836 0001A493 # write32h( dbl_st_acc.l );
864: 837 0001A493 dd effffff86b pushl _dbl_st_acc+4
865: 838 0001A499 fe 08 effffff860 callf $8,_write32h
866: 839 0001A4A0 # }
867: 840 0001A4A0 40 ret#2
868: 841 0001A4A1 .set L309,0x0
869: 842 0001A4A1 L311:
870: 843 0001A4A1 11 9d jbr L312
871: 844 0001A4A3 .data
872: 845 000008ac * .text
873: 846 0001A4A3 00 .align 1
874: 847 0001A4A4 .globl _lnd_er_halt
875: 848 0001A4A4 _lnd_er_halt:
876: 849 0001A4A4 0000 .word L315
877: 850 0001A4A6 #
878: 851 0001A4A6 #
879: 852 0001A4A6 #
880: 853 0001A4A6 # /**************************************************************************
881: 854 0001A4A6 # *
882: 855 0001A4A6 # * HALT ON ERROR ROUTINE
883: 856 0001A4A6 # *
884: 857 0001A4A6 # **************************************************************************/
885: 858 0001A4A6 # lnd_er_halt( halt_code )
886: 859 0001A4A6 # int halt_code;
887: 860 0001A4A6 # {
888: 861 0001A4A6 13 00ff jbr L317
889: 862 0001A4A9 L318:
890: 863 0001A4A9 # sgl_value_1 = dbl_ld_acc.m;
891: 864 0001A4A9 0d effffff851 effffff84c movl _dbl_ld_acc,_sgl_value_1
892: 865 0001A4B4 # sgl_value_2 = dbl_ld_acc.l;
893: 866 0001A4B4 0d effffff84a effffff841 movl _dbl_ld_acc+4,_sgl_value_2
894: 867 0001A4BF # sgl_value_3 = dbl_st_acc.m;
895: 868 0001A4BF 0d effffff83b effffff836 movl _dbl_st_acc,_sgl_value_3
896: 869 0001A4CA # sgl_value_4 = dbl_st_acc.l;
897: 870 0001A4CA 0d effffff834 effffff82b movl _dbl_st_acc+4,_sgl_value_4
898: 871 0001A4D5 # sgl_dummy1 = halt_code; /* get the error type */
899: 872 0001A4D5 0d ad04 effffff823 movl 4(fp),_sgl_dummy1
900: 873 0001A4DD # asm("movl _test_no,r0"); /* r0 = test number */
901: 874 0001A4DD 0d effffff81d 50 movl _test_no,r0
902: 875 0001A4E4 # asm("movl _subtest,r1"); /* r1 = subtest number */
903: 876 0001A4E4 0d effffff816 51 movl _subtest,r1
904: 877 0001A4EB # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
905: 878 0001A4EB 0d effffff80f 52 movl _sgl_dummy1,r2
906: 879 0001A4F2 # asm("movl _cycle,r3"); /* r3 = cycle count */
907: 880 0001A4F2 0d effffff808 53 movl _cycle,r3
908: 881 0001A4F9 # asm("movl _sgl_value_1,r4"); /* r4 = MS operand 1 */
909: 882 0001A4F9 0d effffff801 54 movl _sgl_value_1,r4
910: 883 0001A500 # asm("movl _sgl_value_2,r5"); /* r5 = LS operand 1 */
911: 884 0001A500 0d effffff7fa 55 movl _sgl_value_2,r5
912: 885 0001A507 # asm("movl _sgl_value_3,r6"); /* r6 = MS result */
913: 886 0001A507 0d effffff7f3 56 movl _sgl_value_3,r6
914: 887 0001A50E # asm("movl _sgl_value_4,r7"); /* r7 = LS result */
915: 888 0001A50E 0d effffff7ec 57 movl _sgl_value_4,r7
916: 889 0001A515 # if( halt_code == BAD_ACC_HLT ) {
917: 890 0001A515 1d ad04 01 cmpl 4(fp),$1
918: 891 0001A519 21 2d jneq L319
919: 892 0001A51B # sgl_value_1 = dbl_expected.m;
920: 893 0001A51B 0d effffff7df effffff7da movl _dbl_expected,_sgl_value_1
921: 894 0001A526 # sgl_value_2 = dbl_expected.l;
922: 895 0001A526 0d effffff7d8 effffff7cf movl _dbl_expected+4,_sgl_value_2
923: 896 0001A531 # asm("movl _sgl_value_1,r8"); /* r8 = MS expected */
924: 897 0001A531 0d effffff7c9 58 movl _sgl_value_1,r8
925: 898 0001A538 # asm("movl _sgl_value_2,r9"); /* r9 = LS expected */
926: 899 0001A538 0d effffff7c2 59 movl _sgl_value_2,r9
927: 900 0001A53F # asm("movl _index,r10"); /* r10 = data index */
928: 901 0001A53F 0d effffff7bb 5a movl _index,r10
929: 902 0001A546 # } else
930: 903 0001A546 11 5e jbr L320
931: 904 0001A548 L319:
932: 905 0001A548 # if( halt_code == BAD_REG_HLT ) {
933: 906 0001A548 1d ad04 02 cmpl 4(fp),$2
934: 907 0001A54C 21 3d jneq L321
935: 908 0001A54E # sgl_dummy1 = load_regs[index2];
936: 909 0001A54E 0d effffff7ac 50 movl _index2,r0
937: 910 0001A555 0d 40effffff7a4 movl _load_regs[r0],_sgl_dummy1
938: effffff79f
939: 911 0001A561 # sgl_dummy2 = store_regs[index2];
940: 912 0001A561 0d effffff799 50 movl _index2,r0
941: 913 0001A568 0d 40effffff791 movl _store_regs[r0],_sgl_dummy2
942: effffff78c
943: 914 0001A574 # asm("movl _index2,r8"); /* r8 = bad register # */
944: 915 0001A574 0d effffff786 58 movl _index2,r8
945: 916 0001A57B # asm("movl _sgl_dummy2,r9"); /* r9 = actual value */
946: 917 0001A57B 0d effffff77f 59 movl _sgl_dummy2,r9
947: 918 0001A582 # asm("movl _sgl_dummy1,r10"); /* r10 = expected value */
948: 919 0001A582 0d effffff778 5a movl _sgl_dummy1,r10
949: 920 0001A589 # } else
950: 921 0001A589 11 1b jbr L322
951: 922 0001A58B L321:
952: 923 0001A58B # if( halt_code == BAD_PSL_HLT ) {
953: 924 0001A58B 1d ad04 03 cmpl 4(fp),$3
954: 925 0001A58F 21 15 jneq L323
955: 926 0001A591 # asm("movl _init_psl,r8"); /* r8 = initial PSL */
956: 927 0001A591 0d effffff769 58 movl _init_psl,r8
957: 928 0001A598 # asm("movl _psl_val,r9"); /* r9 = final PSL */
958: 929 0001A598 0d effffff762 59 movl _psl_val,r9
959: 930 0001A59F # asm("movl _exp_psl,r10"); /* r10 = expected PSL */
960: 931 0001A59F 0d effffff75b 5a movl _exp_psl,r10
961: 932 0001A5A6 # };
962: 933 0001A5A6 L323:
963: 934 0001A5A6 L322:
964: 935 0001A5A6 L320:
965: 936 0001A5A6 # asm("halt"); /* HALT ... */
966: 937 0001A5A6 00 halt
967: 938 0001A5A7 # }
968: 939 0001A5A7 40 ret#2
969: 940 0001A5A8 .set L315,0x0
970: 941 0001A5A8 L317:
971: 942 0001A5A8 13 fefe jbr L318
972: 943 0001A5AB .data
973: 943 000342AB .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.