|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 000008ac * .text
4 00000000 .align 1
5 00000000 .globl _ldfd
6 00000000 _ldfd:
7 0001EDA4 0000 .word L215
8 0001EDA6 #
9 0001EDA6 # #include "fpp_defs.h"
10 0001EDA6 #
11 0001EDA6 #
12 0001EDA6 # /*****************************************************************************
13 0001EDA6 # *
14 0001EDA6 # * LDFD - SINGLE PRECISION FLOATING POINT CONVERT LONG TO FLOAT TEST
15 0001EDA6 # *
16 0001EDA6 # *****************************************************************************/
17 0001EDA6 # ldfd()
18 0001EDA6 # {
19 0001EDA6 11 41 jbr L217
20 0001EDA8 L218:
21 0001EDA8 # asm(".globl _ldfd_t");
22 0001EDA8 .globl _ldfd_t
23 0001EDA8 # asm("_ldfd_t:"); /* entry address */
24 0001EDA8 _ldfd_t:
25 0001EDA8 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26 0001EDA8 1d effffffff6 01 cmpl _cycle,$1
27 0001EDAF 21 15 jneq L219
28 0001EDB1 5d efffffffed tstl _prt_hdrs
29 0001EDB7 31 0d jeql L219
30 0001EDB9 # writes(" LDFD");
31 0001EDB9 .data 1
32 000008ac * L221:
33 000008ac * 204C44464400 .ascii " LDFD\0"
34 000008b2 * .text
35 0001EDB9 dd 8f000008ac pushl $L221
36 0001EDBF fe 08 efffffffde callf $8,_writes
37 0001EDC6 # ldfd_1(); /* load through a register */
38 0001EDC6 L219:
39 0001EDC6 fe 04 ef0000001f callf $4,_ldfd_1
40 0001EDCD # ldfd_2(); /* load through the cache */
41 0001EDCD fe 04 ef000001b8 callf $4,_ldfd_2
42 0001EDD4 # ldfd_3(); /* register stability */
43 0001EDD4 fe 04 ef00000345 callf $4,_ldfd_3
44 0001EDDB # ldfd_4(); /* PSL stability test */
45 0001EDDB fe 04 ef00000524 callf $4,_ldfd_4
46 0001EDE2 # asm("jmp *return"); /* return to the test monitor */
47 0001EDE2 71 ffffffffbc jmp *return
48 0001EDE8 # }
49 0001EDE8 40 ret#2
50 0001EDE9 .set L215,0x0
51 0001EDE9 L217:
52 0001EDE9 11 bd jbr L218
53 0001EDEB .data
54 000008ac * .text
55 0001EDEB 00 .align 1
56 0001EDEC .globl _ldfd_1
57 0001EDEC _ldfd_1:
58 0001EDEC 0000 .word L226
59 0001EDEE #
60 0001EDEE #
61 0001EDEE #
62 0001EDEE # /************************************************************************
63 0001EDEE # *
64 0001EDEE # * SUBTEST 1
65 0001EDEE # *
66 0001EDEE # ************************************************************************/
67 0001EDEE # ldfd_1()
68 0001EDEE # {
69 0001EDEE 13 0198 jbr L228
70 0001EDF1 L229:
71 0001EDF1 # force_loop = FALSE;
72 0001EDF1 4d efffffffad clrl _force_loop
73 0001EDF7 # subtest = 1;
74 0001EDF7 0d 01 efffffffa6 movl $1,_subtest
75 0001EDFE # index = 0;
76 0001EDFE 4d efffffffa0 clrl _index
77 0001EE04 # do
78 0001EE04 L232:
79 0001EE04 # {
80 0001EE04 # sgl_ld_acc = ldfd_1_data[index].ld; /* get the operand */
81 0001EE04 5c 0c efffffff99 50 mull3 $12,_index,r0
82 0001EE0C 0d e000000000 efffffff8d movl _ldfd_1_data(r0),_sgl_ld_acc
83 0001EE17 # dbl_expected.m = ldfd_1_data[index].exp.m;/* get expected result */
84 0001EE17 5c 0c efffffff86 50 mull3 $12,_index,r0
85 0001EE1F 0d e000000004 efffffff7a movl _ldfd_1_data+4(r0),_dbl_expected
86 0001EE2A # dbl_expected.l = 0; /* get expected result */
87 0001EE2A 4d efffffff78 clrl _dbl_expected+4
88 0001EE30 # /*
89 0001EE30 # * If LOOP ON ERROR is set, this is the loop for this subtest.
90 0001EE30 # * The force loop flag is set after the first error.
91 0001EE30 # */
92 0001EE30 # asm("_ldfd_1_lp1:");
93 0001EE30 _ldfd_1_lp1:
94 0001EE30 # asm("movl _sgl_ld_acc,r4"); /* get the value to convert */
95 0001EE30 0d efffffff6e 54 movl _sgl_ld_acc,r4
96 0001EE37 # asm("ldfd r4"); /* load the data */
97 0001EE37 97 54 ldfd r4
98 0001EE39 # asm("std r6"); /* store the result in R8 */
99 0001EE39 27 56 std r6
100 0001EE3B # if( force_loop )
101 0001EE3B 5d efffffff63 tstl _force_loop
102 0001EE41 31 02 jeql L233
103 0001EE43 # asm("brb _ldfd_1_lp1");; /* loop on the error */
104 0001EE43 11 eb brb _ldfd_1_lp1
105 0001EE45 L233:
106 0001EE45 # /*
107 0001EE45 # * end error loop - test the results
108 0001EE45 # */
109 0001EE45 # asm("movl r6,_dbl_st_acc"); /* move MSW to cache */
110 0001EE45 0d 56 efffffff58 movl r6,_dbl_st_acc
111 0001EE4C # asm("movl r7,_dbl_st_acc+4"); /* move LSW to cache */
112 0001EE4C 0d 57 efffffff55 movl r7,_dbl_st_acc+4
113 0001EE53 # if( ( dbl_st_acc.m != dbl_expected.m ) || /* COMPARE the values */
114 0001EE53 # ( dbl_st_acc.l != dbl_expected.l ) ){
115 0001EE53 1d efffffff4b efffffff46 cmpl _dbl_st_acc,_dbl_expected
116 0001EE5E 21 10 jneq L9999
117 0001EE60 1d efffffff42 efffffff3d cmpl _dbl_st_acc+4,_dbl_expected+4
118 0001EE6B 21 03 13 00ff jeql L234
119 0001EE70 L9999:
120 0001EE70 # errcnt++; /* bump the error count */
121 0001EE70 6d efffffff2e incl _errcnt
122 0001EE76 # if( prt_error ) {
123 0001EE76 5d efffffff28 tstl _prt_error
124 0001EE7C 21 03 13 00cb jeql L235
125 0001EE81 # writes(" \n"); /* start a new print line */
126 0001EE81 .data 1
127 000008b2 * L236:
128 000008b2 * 200A00 .ascii " \12\0"
129 000008b5 * .text
130 0001EE81 dd 8f000008b2 pushl $L236
131 0001EE87 fe 08 efffffff16 callf $8,_writes
132 0001EE8E # writes("cycle: ");
133 0001EE8E .data 1
134 000008b5 * L237:
135 000008b5 * 6379636C653A2000 .ascii "cycle: \0"
136 000008bd * .text
137 0001EE8E dd 8f000008b5 pushl $L237
138 0001EE94 fe 08 efffffff09 callf $8,_writes
139 0001EE9B # writed( cycle );
140 0001EE9B dd efffffff03 pushl _cycle
141 0001EEA1 fe 08 effffffefc callf $8,_writed
142 0001EEA8 # writes(" LDFD test ");
143 0001EEA8 .data 1
144 000008bd * L239:
145 000008bd * 20204C4446442074657374200 .ascii " LDFD test \0"
0
146 000008ca * .text
147 0001EEA8 dd 8f000008bd pushl $L239
148 0001EEAE fe 08 effffffeef callf $8,_writes
149 0001EEB5 # writed( test_no );
150 0001EEB5 dd effffffee9 pushl _test_no
151 0001EEBB fe 08 effffffee2 callf $8,_writed
152 0001EEC2 # writes(", subtest 1 (Reg. Data) - BAD FINAL ACC\n");
153 0001EEC2 .data 1
154 000008ca * L240:
155 000008ca * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - BAD FINAL ACC\12\0"
85265672E204461746129202D
204241442046494E414C20414
3430A00
156 000008f3 * .text
157 0001EEC2 dd 8f000008ca pushl $L240
158 0001EEC8 fe 08 effffffed5 callf $8,_writes
159 0001EECF # print_ldfd_data();
160 0001EECF fe 04 ef00000610 callf $4,_print_ldfd_data
161 0001EED6 # writes(", index = ");
162 0001EED6 .data 1
163 000008f3 * L242:
164 000008f3 * 2C202020696E646578203D200 .ascii ", index = \0"
0
165 00000900 * .text
166 0001EED6 dd 8f000008f3 pushl $L242
167 0001EEDC fe 08 effffffec1 callf $8,_writes
168 0001EEE3 # writed( index );
169 0001EEE3 dd effffffebb pushl _index
170 0001EEE9 fe 08 effffffeb4 callf $8,_writed
171 0001EEF0 # writec('\n');
172 0001EEF0 dd 0a pushl $10
173 0001EEF2 fe 08 effffffeab callf $8,_writec
174 0001EEF9 # writes(" operand = ");
175 0001EEF9 .data 1
176 00000900 * L244:
177 00000900 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
178 0000090f * .text
179 0001EEF9 dd 8f00000900 pushl $L244
180 0001EEFF fe 08 effffffe9e callf $8,_writes
181 0001EF06 # write32h( sgl_ld_acc );
182 0001EF06 dd effffffe98 pushl _sgl_ld_acc
183 0001EF0C fe 08 effffffe91 callf $8,_write32h
184 0001EF13 # writes(", expected Acc = ");
185 0001EF13 .data 1
186 0000090f * L246:
187 0000090f * 2C20202020202020206578706 .ascii ", expected Acc = \0"
56374656420416363203D2000
188 00000928 * .text
189 0001EF13 dd 8f0000090f pushl $L246
190 0001EF19 fe 08 effffffe84 callf $8,_writes
191 0001EF20 # write32h( dbl_expected.m );
192 0001EF20 dd effffffe7e pushl _dbl_expected
193 0001EF26 fe 08 effffffe77 callf $8,_write32h
194 0001EF2D # writec(' ');
195 0001EF2D dd 20 pushl $32
196 0001EF2F fe 08 effffffe6e callf $8,_writec
197 0001EF36 # write32h( dbl_expected.l );
198 0001EF36 dd effffffe6c pushl _dbl_expected+4
199 0001EF3C fe 08 effffffe61 callf $8,_write32h
200 0001EF43 # writec('\n');
201 0001EF43 dd 0a pushl $10
202 0001EF45 fe 08 effffffe58 callf $8,_writec
203 0001EF4C # }
204 0001EF4C # if( halt_flg )
205 0001EF4C L235:
206 0001EF4C 5d effffffe52 tstl _halt_flg
207 0001EF52 31 09 jeql L247
208 0001EF54 # ldfd_er_halt( BAD_ACC_HLT ); /* halt on the error */
209 0001EF54 dd 01 pushl $1
210 0001EF56 fe 08 ef000005e7 callf $8,_ldfd_er_halt
211 0001EF5D # if( loop_on_err ) {
212 0001EF5D L247:
213 0001EF5D 5d effffffe41 tstl _loop_on_err
214 0001EF63 31 0a jeql L249
215 0001EF65 # force_loop = TRUE; /* set the force loop flag */
216 0001EF65 0d 01 effffffe38 movl $1,_force_loop
217 0001EF6C # asm("brw _ldfd_1_lp1");; /* and loop on the error */
218 0001EF6C 13 fec1 brw _ldfd_1_lp1
219 0001EF6F # } /* end of loop on error */
220 0001EF6F # } /* end of compare error */
221 0001EF6F L249:
222 0001EF6F # } while( index++ < max_ldfd_1_index ); /* end of WHILE loop */
223 0001EF6F L234:
224 0001EF6F L231:
225 0001EF6F 0d effffffe2f 50 movl _index,r0
226 0001EF76 6d effffffe28 incl _index
227 0001EF7C 1d 50 effffffe21 cmpl r0,_max_ldfd_1_index
228 0001EF83 81 03 13 fe7c jlss L232
229 0001EF88 L230:
230 0001EF88 # } /* end of subtest 1 */
231 0001EF88 40 ret#2
232 0001EF89 .set L226,0x0
233 0001EF89 L228:
234 0001EF89 13 fe65 jbr L229
235 0001EF8C .data
236 000008ac * .text
237 0001EF8C .align 1
238 0001EF8C .globl _ldfd_2
239 0001EF8C _ldfd_2:
240 0001EF8C 0000 .word L250
241 0001EF8E #
242 0001EF8E #
243 0001EF8E #
244 0001EF8E # /************************************************************************
245 0001EF8E # *
246 0001EF8E # * SUBTEST 2 - convert through memory
247 0001EF8E # *
248 0001EF8E # ************************************************************************/
249 0001EF8E # ldfd_2()
250 0001EF8E # {
251 0001EF8E 13 018b jbr L252
252 0001EF91 L253:
253 0001EF91 # force_loop = FALSE;
254 0001EF91 4d effffffe0d clrl _force_loop
255 0001EF97 # subtest = 2;
256 0001EF97 0d 02 effffffe06 movl $2,_subtest
257 0001EF9E # index = 0;
258 0001EF9E 4d effffffe00 clrl _index
259 0001EFA4 # do
260 0001EFA4 L256:
261 0001EFA4 # {
262 0001EFA4 # sgl_ld_acc = ldfd_1_data[index].ld; /* get the operand */
263 0001EFA4 5c 0c effffffdf9 50 mull3 $12,_index,r0
264 0001EFAC 0d e000000000 effffffded movl _ldfd_1_data(r0),_sgl_ld_acc
265 0001EFB7 # dbl_expected.m = ldfd_1_data[index].exp.m;/* get expected result */
266 0001EFB7 5c 0c effffffde6 50 mull3 $12,_index,r0
267 0001EFBF 0d e000000004 effffffdda movl _ldfd_1_data+4(r0),_dbl_expected
268 0001EFCA # dbl_expected.l = 0; /* get expected result */
269 0001EFCA 4d effffffdd8 clrl _dbl_expected+4
270 0001EFD0 # /*
271 0001EFD0 # * If LOOP ON ERROR is set, this is the loop for this subtest.
272 0001EFD0 # * The force loop flag is set after the first error.
273 0001EFD0 # */
274 0001EFD0 # asm("_ldfd_2_lp1:");
275 0001EFD0 _ldfd_2_lp1:
276 0001EFD0 # asm("ldfd _sgl_ld_acc"); /* convert the value */
277 0001EFD0 97 effffffdce ldfd _sgl_ld_acc
278 0001EFD6 # asm("std _dbl_st_acc"); /* store the result */
279 0001EFD6 27 effffffdc8 std _dbl_st_acc
280 0001EFDC # if( force_loop )
281 0001EFDC 5d effffffdc2 tstl _force_loop
282 0001EFE2 31 02 jeql L257
283 0001EFE4 # asm("brb _ldfd_2_lp1");; /* loop on the error */
284 0001EFE4 11 ea brb _ldfd_2_lp1
285 0001EFE6 L257:
286 0001EFE6 # /*
287 0001EFE6 # * end error loop - test the results
288 0001EFE6 # */
289 0001EFE6 # if( ( dbl_st_acc.m != dbl_expected.m ) || /* COMPARE the values */
290 0001EFE6 # ( dbl_st_acc.l != dbl_expected.l ) ){
291 0001EFE6 1d effffffdb8 effffffdb3 cmpl _dbl_st_acc,_dbl_expected
292 0001EFF1 21 10 jneq L9998
293 0001EFF3 1d effffffdaf effffffdaa cmpl _dbl_st_acc+4,_dbl_expected+4
294 0001EFFE 21 03 13 00ff jeql L258
295 0001F003 L9998:
296 0001F003 # errcnt++; /* bump the error count */
297 0001F003 6d effffffd9b incl _errcnt
298 0001F009 # if( prt_error ) {
299 0001F009 5d effffffd95 tstl _prt_error
300 0001F00F 21 03 13 00cb jeql L259
301 0001F014 # writes(" \n"); /* start a new print line */
302 0001F014 .data 1
303 00000928 * L260:
304 00000928 * 200A00 .ascii " \12\0"
305 0000092b * .text
306 0001F014 dd 8f00000928 pushl $L260
307 0001F01A fe 08 effffffd83 callf $8,_writes
308 0001F021 # writes("cycle: ");
309 0001F021 .data 1
310 0000092b * L261:
311 0000092b * 6379636C653A2000 .ascii "cycle: \0"
312 00000933 * .text
313 0001F021 dd 8f0000092b pushl $L261
314 0001F027 fe 08 effffffd76 callf $8,_writes
315 0001F02E # writed( cycle );
316 0001F02E dd effffffd70 pushl _cycle
317 0001F034 fe 08 effffffd69 callf $8,_writed
318 0001F03B # writes(" LDFD test ");
319 0001F03B .data 1
320 00000933 * L262:
321 00000933 * 20204C4446442074657374200 .ascii " LDFD test \0"
0
322 00000940 * .text
323 0001F03B dd 8f00000933 pushl $L262
324 0001F041 fe 08 effffffd5c callf $8,_writes
325 0001F048 # writed( test_no );
326 0001F048 dd effffffd56 pushl _test_no
327 0001F04E fe 08 effffffd4f callf $8,_writed
328 0001F055 # writes(", subtest 2 (Cache Data) - BAD FINAL ACC\n");
329 0001F055 .data 1
330 00000940 * L263:
331 00000940 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - BAD FINAL ACC\12\0"
8436163686520446174612920
2D204241442046494E414C204
143430A00
332 0000096a * .text
333 0001F055 dd 8f00000940 pushl $L263
334 0001F05B fe 08 effffffd42 callf $8,_writes
335 0001F062 # print_ldfd_data();
336 0001F062 fe 04 ef0000047d callf $4,_print_ldfd_data
337 0001F069 # writes(", index = ");
338 0001F069 .data 1
339 0000096a * L264:
340 0000096a * 2C202020696E646578203D200 .ascii ", index = \0"
0
341 00000977 * .text
342 0001F069 dd 8f0000096a pushl $L264
343 0001F06F fe 08 effffffd2e callf $8,_writes
344 0001F076 # writed( index );
345 0001F076 dd effffffd28 pushl _index
346 0001F07C fe 08 effffffd21 callf $8,_writed
347 0001F083 # writec('\n');
348 0001F083 dd 0a pushl $10
349 0001F085 fe 08 effffffd18 callf $8,_writec
350 0001F08C # writes(" operand = ");
351 0001F08C .data 1
352 00000977 * L265:
353 00000977 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
354 00000986 * .text
355 0001F08C dd 8f00000977 pushl $L265
356 0001F092 fe 08 effffffd0b callf $8,_writes
357 0001F099 # write32h( sgl_ld_acc );
358 0001F099 dd effffffd05 pushl _sgl_ld_acc
359 0001F09F fe 08 effffffcfe callf $8,_write32h
360 0001F0A6 # writes(", expected Acc = ");
361 0001F0A6 .data 1
362 00000986 * L266:
363 00000986 * 2C20202020202020206578706 .ascii ", expected Acc = \0"
56374656420416363203D2000
364 0000099f * .text
365 0001F0A6 dd 8f00000986 pushl $L266
366 0001F0AC fe 08 effffffcf1 callf $8,_writes
367 0001F0B3 # write32h( dbl_expected.m );
368 0001F0B3 dd effffffceb pushl _dbl_expected
369 0001F0B9 fe 08 effffffce4 callf $8,_write32h
370 0001F0C0 # writec(' ');
371 0001F0C0 dd 20 pushl $32
372 0001F0C2 fe 08 effffffcdb callf $8,_writec
373 0001F0C9 # write32h( dbl_expected.l );
374 0001F0C9 dd effffffcd9 pushl _dbl_expected+4
375 0001F0CF fe 08 effffffcce callf $8,_write32h
376 0001F0D6 # writec('\n');
377 0001F0D6 dd 0a pushl $10
378 0001F0D8 fe 08 effffffcc5 callf $8,_writec
379 0001F0DF # }
380 0001F0DF # if( halt_flg )
381 0001F0DF L259:
382 0001F0DF 5d effffffcbf tstl _halt_flg
383 0001F0E5 31 09 jeql L267
384 0001F0E7 # ldfd_er_halt( BAD_ACC_HLT ); /* halt on the error */
385 0001F0E7 dd 01 pushl $1
386 0001F0E9 fe 08 ef00000454 callf $8,_ldfd_er_halt
387 0001F0F0 # if( loop_on_err ) {
388 0001F0F0 L267:
389 0001F0F0 5d effffffcae tstl _loop_on_err
390 0001F0F6 31 0a jeql L268
391 0001F0F8 # force_loop = TRUE; /* set the force loop flag */
392 0001F0F8 0d 01 effffffca5 movl $1,_force_loop
393 0001F0FF # asm("brw _ldfd_2_lp1");; /* and loop on the error */
394 0001F0FF 13 fece brw _ldfd_2_lp1
395 0001F102 # } /* end of loop on error */
396 0001F102 # } /* end of compare error */
397 0001F102 L268:
398 0001F102 # } while( index++ < max_ldfd_1_index ); /* end of WHILE loop */
399 0001F102 L258:
400 0001F102 L255:
401 0001F102 0d effffffc9c 50 movl _index,r0
402 0001F109 6d effffffc95 incl _index
403 0001F10F 1d 50 effffffc8e cmpl r0,_max_ldfd_1_index
404 0001F116 81 03 13 fe89 jlss L256
405 0001F11B L254:
406 0001F11B # } /* end of subtest 2 */
407 0001F11B 40 ret#2
408 0001F11C .set L250,0x0
409 0001F11C L252:
410 0001F11C 13 fe72 jbr L253
411 0001F11F .data
412 000008ac * .text
413 0001F11F 00 .align 1
414 0001F120 .globl _ldfd_3
415 0001F120 _ldfd_3:
416 0001F120 0000 .word L269
417 0001F122 #
418 0001F122 #
419 0001F122 #
420 0001F122 # /************************************************************************
421 0001F122 # *
422 0001F122 # * SUBTEST 3 - Check for register corruption
423 0001F122 # *
424 0001F122 # ************************************************************************/
425 0001F122 # ldfd_3()
426 0001F122 # {
427 0001F122 13 01de jbr L271
428 0001F125 L272:
429 0001F125 # force_loop = FALSE; /* clear force_loop flg */
430 0001F125 4d effffffc79 clrl _force_loop
431 0001F12B # subtest = 3;
432 0001F12B 0d 03 effffffc72 movl $3,_subtest
433 0001F132 # fill_reg_buf( load_regs ); /* get patterns for regs */
434 0001F132 dd 8f00000000 pushl $_load_regs
435 0001F138 fe 08 effffffc65 callf $8,_fill_reg_buf
436 0001F13F # index = 0;
437 0001F13F 4d effffffc5f clrl _index
438 0001F145 # sgl_ld_acc = ldfd_1_data[index].ld; /* get the operand */
439 0001F145 5c 0c effffffc58 50 mull3 $12,_index,r0
440 0001F14D 0d e000000000 effffffc4c movl _ldfd_1_data(r0),_sgl_ld_acc
441 0001F158 # /*
442 0001F158 # * If LOOP ON ERROR is set, this is the loop for this subtest.
443 0001F158 # * The force loop flag is set after the first error.
444 0001F158 # */
445 0001F158 # asm("_ldfd_3_lp1:");
446 0001F158 _ldfd_3_lp1:
447 0001F158 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
448 0001F158 ab 891fff effffffc43 loadr $0x1fff,_load_regs
449 0001F161 # asm("nop");
450 0001F161 10 nop
451 0001F162 # asm("ldfd _sgl_ld_acc"); /* convert the value */
452 0001F162 97 effffffc3c ldfd _sgl_ld_acc
453 0001F168 # asm("nop");
454 0001F168 10 nop
455 0001F169 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
456 0001F169 bb 891fff effffffc32 storer $0x1fff,_store_regs
457 0001F172 # asm("std _dbl_st_acc"); /* save the acc */
458 0001F172 27 effffffc2c std _dbl_st_acc
459 0001F178 # if( force_loop )
460 0001F178 5d effffffc26 tstl _force_loop
461 0001F17E 31 02 jeql L274
462 0001F180 # asm("brb _ldfd_3_lp1");; /* loop on the error */
463 0001F180 11 d6 brb _ldfd_3_lp1
464 0001F182 L274:
465 0001F182 # /*
466 0001F182 # * Now compare the stored register values to those that were loaded
467 0001F182 # */
468 0001F182 # index2 = 0;
469 0001F182 4d effffffc1c clrl _index2
470 0001F188 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
471 0001F188 L275:
472 0001F188 0d effffffc16 50 movl _index2,r0
473 0001F18F 0d effffffc0f 51 movl _index2,r1
474 0001F196 1d 40effffffc07 cmpl _load_regs[r0],_store_regs[r1]
41effffffc01
475 0001F1A3 21 11 jneq L276
476 0001F1A5 1d effffffbf9 0d cmpl _index2,$13
477 0001F1AC 81 08 jgeq L276
478 0001F1AE # index2++; /* check reg values */
479 0001F1AE 6d effffffbf0 incl _index2
480 0001F1B4 11 d2 jbr L275
481 0001F1B6 L276:
482 0001F1B6 # if( index2 < 13 ) { /* error if index2 < 13 */
483 0001F1B6 1d effffffbe8 0d cmpl _index2,$13
484 0001F1BD 91 03 13 0128 jgeq L277
485 0001F1C2 # errcnt++; /* bump the error count */
486 0001F1C2 6d effffffbdc incl _errcnt
487 0001F1C8 # if( prt_error ) {
488 0001F1C8 5d effffffbd6 tstl _prt_error
489 0001F1CE 21 03 13 00f4 jeql L278
490 0001F1D3 # writes(" \n"); /* start a new print line */
491 0001F1D3 .data 1
492 0000099f * L279:
493 0000099f * 200A00 .ascii " \12\0"
494 000009a2 * .text
495 0001F1D3 dd 8f0000099f pushl $L279
496 0001F1D9 fe 08 effffffbc4 callf $8,_writes
497 0001F1E0 # writes("cycle: ");
498 0001F1E0 .data 1
499 000009a2 * L280:
500 000009a2 * 6379636C653A2000 .ascii "cycle: \0"
501 000009aa * .text
502 0001F1E0 dd 8f000009a2 pushl $L280
503 0001F1E6 fe 08 effffffbb7 callf $8,_writes
504 0001F1ED # writed( cycle );
505 0001F1ED dd effffffbb1 pushl _cycle
506 0001F1F3 fe 08 effffffbaa callf $8,_writed
507 0001F1FA # writes(" LDFD test ");
508 0001F1FA .data 1
509 000009aa * L281:
510 000009aa * 20204C4446442074657374200 .ascii " LDFD test \0"
0
511 000009b7 * .text
512 0001F1FA dd 8f000009aa pushl $L281
513 0001F200 fe 08 effffffb9d callf $8,_writes
514 0001F207 # writed( test_no );
515 0001F207 dd effffffb97 pushl _test_no
516 0001F20D fe 08 effffffb90 callf $8,_writed
517 0001F214 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n");
518 0001F214 .data 1
519 000009b7 * L282:
520 000009b7 * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
D204120524547495354455220
574153204D4F4449464945440
A00
521 000009de * .text
522 0001F214 dd 8f000009b7 pushl $L282
523 0001F21A fe 08 effffffb83 callf $8,_writes
524 0001F221 # print_ldfd_data(); /* print the operands */
525 0001F221 fe 04 ef000002be callf $4,_print_ldfd_data
526 0001F228 # writes("\n");
527 0001F228 .data 1
528 000009de * L283:
529 000009de * 0A00 .ascii "\12\0"
530 000009e0 * .text
531 0001F228 dd 8f000009de pushl $L283
532 0001F22E fe 08 effffffb6f callf $8,_writes
533 0001F235 # writes(" operand = ");
534 0001F235 .data 1
535 000009e0 * L284:
536 000009e0 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
537 000009ef * .text
538 0001F235 dd 8f000009e0 pushl $L284
539 0001F23B fe 08 effffffb62 callf $8,_writes
540 0001F242 # write32h( sgl_ld_acc );
541 0001F242 dd effffffb5c pushl _sgl_ld_acc
542 0001F248 fe 08 effffffb55 callf $8,_write32h
543 0001F24F # writes("\n");
544 0001F24F .data 1
545 000009ef * L285:
546 000009ef * 0A00 .ascii "\12\0"
547 000009f1 * .text
548 0001F24F dd 8f000009ef pushl $L285
549 0001F255 fe 08 effffffb48 callf $8,_writes
550 0001F25C # writes("register "); /* print the information */
551 0001F25C .data 1
552 000009f1 * L286:
553 000009f1 * 72656769737465722000 .ascii "register \0"
554 000009fb * .text
555 0001F25C dd 8f000009f1 pushl $L286
556 0001F262 fe 08 effffffb3b callf $8,_writes
557 0001F269 # writed( index2 ); /* about the corrupted */
558 0001F269 dd effffffb35 pushl _index2
559 0001F26F fe 08 effffffb2e callf $8,_writed
560 0001F276 # writes(" = "); /* register */
561 0001F276 .data 1
562 000009fb * L287:
563 000009fb * 203D2000 .ascii " = \0"
564 000009ff * .text
565 0001F276 dd 8f000009fb pushl $L287
566 0001F27C fe 08 effffffb21 callf $8,_writes
567 0001F283 # write32h( store_regs[index2] );
568 0001F283 0d effffffb1b 50 movl _index2,r0
569 0001F28A dd 40effffffb13 pushl _store_regs[r0]
570 0001F291 fe 08 effffffb0c callf $8,_write32h
571 0001F298 # writes(", should be = ");
572 0001F298 .data 1
573 000009ff * L288:
574 000009ff * 2C202073686F756C642062652 .ascii ", should be = \0"
03D2000
575 00000a0f * .text
576 0001F298 dd 8f000009ff pushl $L288
577 0001F29E fe 08 effffffaff callf $8,_writes
578 0001F2A5 # write32h( load_regs[index2] );
579 0001F2A5 0d effffffaf9 50 movl _index2,r0
580 0001F2AC dd 40effffffaf1 pushl _load_regs[r0]
581 0001F2B3 fe 08 effffffaea callf $8,_write32h
582 0001F2BA # writes("\n");
583 0001F2BA .data 1
584 00000a0f * L289:
585 00000a0f * 0A00 .ascii "\12\0"
586 00000a11 * .text
587 0001F2BA dd 8f00000a0f pushl $L289
588 0001F2C0 fe 08 effffffadd callf $8,_writes
589 0001F2C7 # }
590 0001F2C7 # if( halt_flg )
591 0001F2C7 L278:
592 0001F2C7 5d effffffad7 tstl _halt_flg
593 0001F2CD 31 09 jeql L290
594 0001F2CF # ldfd_er_halt( BAD_REG_HLT ); /* halt on the error */
595 0001F2CF dd 02 pushl $2
596 0001F2D1 fe 08 ef0000026c callf $8,_ldfd_er_halt
597 0001F2D8 # if( loop_on_err ) {
598 0001F2D8 L290:
599 0001F2D8 5d effffffac6 tstl _loop_on_err
600 0001F2DE 31 0a jeql L291
601 0001F2E0 # force_loop = TRUE; /* set the force loop flag */
602 0001F2E0 0d 01 effffffabd movl $1,_force_loop
603 0001F2E7 # asm("brw _ldfd_3_lp1");; /* and loop on the error */
604 0001F2E7 13 fe6e brw _ldfd_3_lp1
605 0001F2EA # } /* end of loop on error */
606 0001F2EA # } while( index++ < max_ldfd_1_index ); /* end of reg corruption error */
607 0001F2EA L291:
608 0001F2EA L277:
609 0001F2EA L292:
610 0001F2EA 0d effffffab4 50 movl _index,r0
611 0001F2F1 6d effffffaad incl _index
612 0001F2F7 1d 50 effffffaa6 cmpl r0,_max_ldfd_1_index
613 0001F2FE 81 02 jgeq L293
614 0001F300 11 e8 jbr L292
615 0001F302 L293:
616 0001F302 # } /* end of subtest 3 */
617 0001F302 40 ret#2
618 0001F303 .set L269,0x0
619 0001F303 L271:
620 0001F303 13 fe1f jbr L272
621 0001F306 .data
622 000008ac * .text
623 0001F306 .align 1
624 0001F306 .globl _ldfd_4
625 0001F306 _ldfd_4:
626 0001F306 0000 .word L294
627 0001F308 #
628 0001F308 #
629 0001F308 #
630 0001F308 # /************************************************************************
631 0001F308 # *
632 0001F308 # * SUBTEST 4 - Check for PSL corruption
633 0001F308 # *
634 0001F308 # ************************************************************************/
635 0001F308 # ldfd_4()
636 0001F308 # {
637 0001F308 13 01d7 jbr L296
638 0001F30B L297:
639 0001F30B # force_loop = FALSE; /* clear force_loop flg */
640 0001F30B 4d effffffa93 clrl _force_loop
641 0001F311 # subtest = 4;
642 0001F311 0d 04 effffffa8c movl $4,_subtest
643 0001F318 # for( index = 0; index < max_ldfd_1_index; index++ ) {
644 0001F318 4d effffffa86 clrl _index
645 0001F31E L300:
646 0001F31E 1d effffffa80 effffffa7b cmpl _index,_max_ldfd_1_index
647 0001F329 91 03 13 01b3 jgeq L299
648 0001F32E # sgl_ld_acc = ldfd_1_data[index].ld; /* get the operand */
649 0001F32E 5c 0c effffffa6f 50 mull3 $12,_index,r0
650 0001F336 0d e000000000 effffffa63 movl _ldfd_1_data(r0),_sgl_ld_acc
651 0001F341 # for( status_index = 0; status_index < 3; status_index++ ) {
652 0001F341 4d effffffa5d clrl _status_index
653 0001F347 L303:
654 0001F347 1d effffffa57 03 cmpl _status_index,$3
655 0001F34E 91 03 13 0185 jgeq L302
656 0001F353 # sgl_dummy1 = status_array[status_index];/* status = +, -, 0 */
657 0001F353 0d effffffa4b 50 movl _status_index,r0
658 0001F35A 0d 40effffffa43 movl _status_array[r0],_sgl_dummy1
effffffa3e
659 0001F366 # /*
660 0001F366 # * If LOOP ON ERROR is set, this is the loop for this subtest.
661 0001F366 # * The force loop flag is set after the first error.
662 0001F366 # */
663 0001F366 # asm("_ldfd_4_lp1:");
664 0001F366 _ldfd_4_lp1:
665 0001F366 # asm("movl _sgl_ld_acc,r4"); /* load the base value */
666 0001F366 0d effffffa38 54 movl _sgl_ld_acc,r4
667 0001F36D # asm("tstl _sgl_dummy1"); /* set the PSL status */
668 0001F36D 5d effffffa31 tstl _sgl_dummy1
669 0001F373 # asm("movpsl _init_psl"); /* save the initial PSL */
670 0001F373 cd effffffa2b movpsl _init_psl
671 0001F379 # asm("nop");
672 0001F379 10 nop
673 0001F37A # asm("ldfd r4"); /* convert the value */
674 0001F37A 97 54 ldfd r4
675 0001F37C # asm("nop");
676 0001F37C 10 nop
677 0001F37D # asm("movpsl _psl_val"); /* save the final PSL */
678 0001F37D cd effffffa21 movpsl _psl_val
679 0001F383 # asm("std _dbl_st_acc"); /* save the acc */
680 0001F383 27 effffffa1b std _dbl_st_acc
681 0001F389 # if( force_loop )
682 0001F389 5d effffffa15 tstl _force_loop
683 0001F38F 31 02 jeql L304
684 0001F391 # asm("brb _ldfd_4_lp1");; /* loop on the error */
685 0001F391 11 d3 brb _ldfd_4_lp1
686 0001F393 L304:
687 0001F393 # /*
688 0001F393 # * Now compare the final PSL to the initial PSL -they should be the same
689 0001F393 # */
690 0001F393 # exp_psl = init_psl;
691 0001F393 0d effffffa0b effffffa06 movl _init_psl,_exp_psl
692 0001F39E # exp_psl |= PSL_DBL;
693 0001F39E 8c 890080 effffff9fd orl2 $128,_exp_psl
694 0001F3A7 # if( psl_val != exp_psl ) {
695 0001F3A7 1d effffff9f7 effffff9f2 cmpl _psl_val,_exp_psl
696 0001F3B2 21 03 13 0118 jeql L305
697 0001F3B7 # errcnt++; /* bump the error count */
698 0001F3B7 6d effffff9e7 incl _errcnt
699 0001F3BD # if( prt_error ) {
700 0001F3BD 5d effffff9e1 tstl _prt_error
701 0001F3C3 21 03 13 00e4 jeql L306
702 0001F3C8 # writes(" \n"); /* start a new print line */
703 0001F3C8 .data 1
704 00000a11 * L307:
705 00000a11 * 200A00 .ascii " \12\0"
706 00000a14 * .text
707 0001F3C8 dd 8f00000a11 pushl $L307
708 0001F3CE fe 08 effffff9cf callf $8,_writes
709 0001F3D5 # writes("cycle: ");
710 0001F3D5 .data 1
711 00000a14 * L308:
712 00000a14 * 6379636C653A2000 .ascii "cycle: \0"
713 00000a1c * .text
714 0001F3D5 dd 8f00000a14 pushl $L308
715 0001F3DB fe 08 effffff9c2 callf $8,_writes
716 0001F3E2 # writed( cycle );
717 0001F3E2 dd effffff9bc pushl _cycle
718 0001F3E8 fe 08 effffff9b5 callf $8,_writed
719 0001F3EF # writes(" LDFD test ");
720 0001F3EF .data 1
721 00000a1c * L309:
722 00000a1c * 20204C4446442074657374200 .ascii " LDFD test \0"
0
723 00000a29 * .text
724 0001F3EF dd 8f00000a1c pushl $L309
725 0001F3F5 fe 08 effffff9a8 callf $8,_writes
726 0001F3FC # writed( test_no );
727 0001F3FC dd effffff9a2 pushl _test_no
728 0001F402 fe 08 effffff99b callf $8,_writed
729 0001F409 # writes(", subtest 4 - INCORRECT FINAL PSL\n");
730 0001F409 .data 1
731 00000a29 * L310:
732 00000a29 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
D20494E434F52524543542046
494E414C2050534C0A00
733 00000a4c * .text
734 0001F409 dd 8f00000a29 pushl $L310
735 0001F40F fe 08 effffff98e callf $8,_writes
736 0001F416 # print_ldfd_data(); /* print operands */
737 0001F416 fe 04 ef000000c9 callf $4,_print_ldfd_data
738 0001F41D # writes("\n");
739 0001F41D .data 1
740 00000a4c * L311:
741 00000a4c * 0A00 .ascii "\12\0"
742 00000a4e * .text
743 0001F41D dd 8f00000a4c pushl $L311
744 0001F423 fe 08 effffff97a callf $8,_writes
745 0001F42A # writes(" operand = ");
746 0001F42A .data 1
747 00000a4e * L312:
748 00000a4e * 202020206F706572616E64203 .ascii " operand = \0"
D2000
749 00000a5d * .text
750 0001F42A dd 8f00000a4e pushl $L312
751 0001F430 fe 08 effffff96d callf $8,_writes
752 0001F437 # write32h( sgl_ld_acc );
753 0001F437 dd effffff967 pushl _sgl_ld_acc
754 0001F43D fe 08 effffff960 callf $8,_write32h
755 0001F444 # writes("\n");
756 0001F444 .data 1
757 00000a5d * L313:
758 00000a5d * 0A00 .ascii "\12\0"
759 00000a5f * .text
760 0001F444 dd 8f00000a5d pushl $L313
761 0001F44A fe 08 effffff953 callf $8,_writes
762 0001F451 # writes("initial PSL = ");
763 0001F451 .data 1
764 00000a5f * L314:
765 00000a5f * 696E697469616C2050534C203 .ascii "initial PSL = \0"
D2000
766 00000a6e * .text
767 0001F451 dd 8f00000a5f pushl $L314
768 0001F457 fe 08 effffff946 callf $8,_writes
769 0001F45E # write32h( init_psl );
770 0001F45E dd effffff940 pushl _init_psl
771 0001F464 fe 08 effffff939 callf $8,_write32h
772 0001F46B # writes(", final PSL = ");
773 0001F46B .data 1
774 00000a6e * L315:
775 00000a6e * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
776 00000a7e * .text
777 0001F46B dd 8f00000a6e pushl $L315
778 0001F471 fe 08 effffff92c callf $8,_writes
779 0001F478 # write32h( psl_val );
780 0001F478 dd effffff926 pushl _psl_val
781 0001F47E fe 08 effffff91f callf $8,_write32h
782 0001F485 # writes(", expectd PSL = ");
783 0001F485 .data 1
784 00000a7e * L316:
785 00000a7e * 2C20206578706563746420505 .ascii ", expectd PSL = \0"
34C203D2000
786 00000a90 * .text
787 0001F485 dd 8f00000a7e pushl $L316
788 0001F48B fe 08 effffff912 callf $8,_writes
789 0001F492 # write32h( exp_psl );
790 0001F492 dd effffff90c pushl _exp_psl
791 0001F498 fe 08 effffff905 callf $8,_write32h
792 0001F49F # writes("\n");
793 0001F49F .data 1
794 00000a90 * L317:
795 00000a90 * 0A00 .ascii "\12\0"
796 00000a92 * .text
797 0001F49F dd 8f00000a90 pushl $L317
798 0001F4A5 fe 08 effffff8f8 callf $8,_writes
799 0001F4AC # }
800 0001F4AC # if( halt_flg )
801 0001F4AC L306:
802 0001F4AC 5d effffff8f2 tstl _halt_flg
803 0001F4B2 31 09 jeql L318
804 0001F4B4 # ldfd_er_halt( BAD_PSL_HLT ); /* halt on error */
805 0001F4B4 dd 03 pushl $3
806 0001F4B6 fe 08 ef00000087 callf $8,_ldfd_er_halt
807 0001F4BD # if( loop_on_err ) {
808 0001F4BD L318:
809 0001F4BD 5d effffff8e1 tstl _loop_on_err
810 0001F4C3 31 0a jeql L319
811 0001F4C5 # force_loop = TRUE; /* set force loop flag */
812 0001F4C5 0d 01 effffff8d8 movl $1,_force_loop
813 0001F4CC # asm("brw _ldfd_4_lp1");; /* and loop on error */
814 0001F4CC 13 fe97 brw _ldfd_4_lp1
815 0001F4CF # } /* end of loop on error */
816 0001F4CF # } /* end of PSL corruption error */
817 0001F4CF L319:
818 0001F4CF # } /* end of PSL corruption error */
819 0001F4CF L305:
820 0001F4CF L301:
821 0001F4CF 6d effffff8cf incl _status_index
822 0001F4D5 13 fe6f jbr L303
823 0001F4D8 L302:
824 0001F4D8 # } /* end of data WHILE loop */
825 0001F4D8 L298:
826 0001F4D8 6d effffff8c6 incl _index
827 0001F4DE 13 fe3d jbr L300
828 0001F4E1 L299:
829 0001F4E1 # } /* end of subtest 4 */
830 0001F4E1 40 ret#2
831 0001F4E2 .set L294,0x0
832 0001F4E2 L296:
833 0001F4E2 13 fe26 jbr L297
834 0001F4E5 .data
835 000008ac * .text
836 0001F4E5 00 .align 1
837 0001F4E6 .globl _print_ldfd_data
838 0001F4E6 _print_ldfd_data:
839 0001F4E6 0000 .word L320
840 0001F4E8 #
841 0001F4E8 #
842 0001F4E8 #
843 0001F4E8 # /**************************************************************************
844 0001F4E8 # *
845 0001F4E8 # * PRINT THE DATA AND STORE RESULTS
846 0001F4E8 # *
847 0001F4E8 # * initial Acc = xxxxxxxx xxxxxxxx, stored = xxxxxxxx xxxxxxxx, index = xx
848 0001F4E8 # **************************************************************************/
849 0001F4E8 # print_ldfd_data()
850 0001F4E8 # {
851 0001F4E8 11 58 jbr L322
852 0001F4EA L323:
853 0001F4EA # writes("initial Acc = ");
854 0001F4EA .data 1
855 00000a92 * L324:
856 00000a92 * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
857 00000aa1 * .text
858 0001F4EA dd 8f00000a92 pushl $L324
859 0001F4F0 fe 08 effffff8ad callf $8,_writes
860 0001F4F7 # write32h( sgl_ld_acc );
861 0001F4F7 dd effffff8a7 pushl _sgl_ld_acc
862 0001F4FD fe 08 effffff8a0 callf $8,_write32h
863 0001F504 # writes(", ");
864 0001F504 .data 1
865 00000aa1 * L325:
866 00000aa1 * 2C202020202020202000 .ascii ", \0"
867 00000aab * .text
868 0001F504 dd 8f00000aa1 pushl $L325
869 0001F50A fe 08 effffff893 callf $8,_writes
870 0001F511 # writes(" final Acc = ");
871 0001F511 .data 1
872 00000aab * L326:
873 00000aab * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
874 00000abb * .text
875 0001F511 dd 8f00000aab pushl $L326
876 0001F517 fe 08 effffff886 callf $8,_writes
877 0001F51E # write32h( dbl_st_acc.m );
878 0001F51E dd effffff880 pushl _dbl_st_acc
879 0001F524 fe 08 effffff879 callf $8,_write32h
880 0001F52B # writec(' ');
881 0001F52B dd 20 pushl $32
882 0001F52D fe 08 effffff870 callf $8,_writec
883 0001F534 # write32h( dbl_st_acc.l );
884 0001F534 dd effffff86e pushl _dbl_st_acc+4
885 0001F53A fe 08 effffff863 callf $8,_write32h
886 0001F541 # }
887 0001F541 40 ret#2
888 0001F542 .set L320,0x0
889 0001F542 L322:
890 0001F542 11 a6 jbr L323
891 0001F544 .data
892 000008ac * .text
893 0001F544 .align 1
894 0001F544 .globl _ldfd_er_halt
895 0001F544 _ldfd_er_halt:
896 0001F544 0000 .word L327
897 0001F546 #
898 0001F546 #
899 0001F546 #
900 0001F546 # /**************************************************************************
901 0001F546 # *
902 0001F546 # * HALT ON ERROR ROUTINE
903 0001F546 # *
904 0001F546 # **************************************************************************/
905 0001F546 # ldfd_er_halt( halt_code )
906 0001F546 # int halt_code;
907 0001F546 # {
908 0001F546 13 0101 jbr L329
909 0001F549 L330:
910 0001F549 # sgl_value_1 = sgl_ld_acc;
911 0001F549 0d effffff855 effffff850 movl _sgl_ld_acc,_sgl_value_1
912 0001F554 # sgl_value_2 = dbl_st_acc.m;
913 0001F554 0d effffff84a effffff845 movl _dbl_st_acc,_sgl_value_2
914 0001F55F # sgl_value_3 = dbl_st_acc.l;
915 0001F55F 0d effffff843 effffff83a movl _dbl_st_acc+4,_sgl_value_3
916 0001F56A # sgl_value_5 = 0;
917 0001F56A 4d effffff834 clrl _sgl_value_5
918 0001F570 # sgl_dummy1 = halt_code; /* get the error type */
919 0001F570 0d ad04 effffff82c movl 4(fp),_sgl_dummy1
920 0001F578 # asm("movl _test_no,r0"); /* r0 = test number */
921 0001F578 0d effffff826 50 movl _test_no,r0
922 0001F57F # asm("movl _subtest,r1"); /* r1 = subtest number */
923 0001F57F 0d effffff81f 51 movl _subtest,r1
924 0001F586 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
925 0001F586 0d effffff818 52 movl _sgl_dummy1,r2
926 0001F58D # asm("movl _cycle,r3"); /* r3 = cycle count */
927 0001F58D 0d effffff811 53 movl _cycle,r3
928 0001F594 # asm("movl _sgl_value_1,r4"); /* r4 = MS operand 1 */
929 0001F594 0d effffff80a 54 movl _sgl_value_1,r4
930 0001F59B # asm("movl _sgl_value_5,r5"); /* r5 = LS operand 1 */
931 0001F59B 0d effffff803 55 movl _sgl_value_5,r5
932 0001F5A2 # asm("movl _sgl_value_1,r6"); /* r6 = operand */
933 0001F5A2 0d effffff7fc 56 movl _sgl_value_1,r6
934 0001F5A9 # asm("movl _sgl_value_2,r7"); /* r7 = MS stored */
935 0001F5A9 0d effffff7f5 57 movl _sgl_value_2,r7
936 0001F5B0 # asm("movl _sgl_value_3,r8"); /* r8 = LS stored */
937 0001F5B0 0d effffff7ee 58 movl _sgl_value_3,r8
938 0001F5B7 # if( halt_code == BAD_ACC_HLT ) {
939 0001F5B7 1d ad04 01 cmpl 4(fp),$1
940 0001F5BB 21 2d jneq L331
941 0001F5BD # sgl_value_1 = dbl_expected.m;
942 0001F5BD 0d effffff7e1 effffff7dc movl _dbl_expected,_sgl_value_1
943 0001F5C8 # sgl_value_2 = dbl_expected.l;
944 0001F5C8 0d effffff7da effffff7d1 movl _dbl_expected+4,_sgl_value_2
945 0001F5D3 # asm("movl _sgl_value_1,r9"); /* r9 = MS expected */
946 0001F5D3 0d effffff7cb 59 movl _sgl_value_1,r9
947 0001F5DA # asm("movl _sgl_value_2,r10"); /* r10 = LS expected */
948 0001F5DA 0d effffff7c4 5a movl _sgl_value_2,r10
949 0001F5E1 # asm("movl _index,r11"); /* r11 = data index */
950 0001F5E1 0d effffff7bd 5b movl _index,r11
951 0001F5E8 # } else
952 0001F5E8 11 5e jbr L332
953 0001F5EA L331:
954 0001F5EA # if( halt_code == BAD_REG_HLT ) {
955 0001F5EA 1d ad04 02 cmpl 4(fp),$2
956 0001F5EE 21 3d jneq L333
957 0001F5F0 # sgl_dummy1 = load_regs[index2];
958 0001F5F0 0d effffff7ae 50 movl _index2,r0
959 0001F5F7 0d 40effffff7a6 movl _load_regs[r0],_sgl_dummy1
effffff7a1
960 0001F603 # sgl_dummy2 = store_regs[index2];
961 0001F603 0d effffff79b 50 movl _index2,r0
962 0001F60A 0d 40effffff793 movl _store_regs[r0],_sgl_dummy2
effffff78e
963 0001F616 # asm("movl _index2,r9"); /* r9 = bad register # */
964 0001F616 0d effffff788 59 movl _index2,r9
965 0001F61D # asm("movl _sgl_dummy2,r10"); /* r10 = actual value */
966 0001F61D 0d effffff781 5a movl _sgl_dummy2,r10
967 0001F624 # asm("movl _sgl_dummy1,r11"); /* r11 = expected value */
968 0001F624 0d effffff77a 5b movl _sgl_dummy1,r11
969 0001F62B # } else
970 0001F62B 11 1b jbr L334
971 0001F62D L333:
972 0001F62D # if( halt_code == BAD_PSL_HLT ) {
973 0001F62D 1d ad04 03 cmpl 4(fp),$3
974 0001F631 21 15 jneq L335
975 0001F633 # asm("movl _init_psl,r9"); /* r9 = initial PSL */
976 0001F633 0d effffff76b 59 movl _init_psl,r9
977 0001F63A # asm("movl _psl_val,r10"); /* r10 = final PSL */
978 0001F63A 0d effffff764 5a movl _psl_val,r10
979 0001F641 # asm("movl _exp_psl,r11"); /* r11 = expected PSL */
980 0001F641 0d effffff75d 5b movl _exp_psl,r11
981 0001F648 # };
982 0001F648 L335:
983 0001F648 L334:
984 0001F648 L332:
985 0001F648 # asm("halt"); /* HALT ... */
986 0001F648 00 halt
987 0001F649 # }
988 0001F649 40 ret#2
989 0001F64A .set L327,0x0
990 0001F64A L329:
991 0001F64A 13 fefc jbr L330
992 0001F64D .data
992 0003E3F1 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.