|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 000002ec * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _reserved_address
6: 6 00000000 _reserved_address:
7: Symbol _reserved_add not found ---
8: 7 00000000 0000 .word L215
9: 8 00000002 # #include "fpp_defs.h"
10: 9 00000002 #
11: 10 00000002 #
12: 11 00000002 #
13: 12 00000002 # /****************************************************************************
14: 13 00000002 # * Floating Point Test RESERVED_ADDRESS FAULT Handler
15: 14 00000002 # *
16: 15 00000002 # * The only way to this code is via an RESERVED ADDRESS fault and the
17: 16 00000002 # * EVENT handler. The fault may or may not be expected.
18: 17 00000002 # *
19: 18 00000002 # * 13-Feb-85 JJM: removed the messages from here & made code prettier
20: 19 00000002 # ****************************************************************************/
21: 20 00000002 # reserved_address()
22: 21 00000002 # {
23: Symbol _reserved_add not found ---
24: 22 00000002 13 0228 jbr L217
25: 23 00000005 L218:
26: 24 00000005 # asm(".globl _res_addr_handler"); /* entry point */
27: 25 00000005 .globl _res_addr_handler
28: 26 00000005 # asm("_res_addr_handler:");
29: 27 00000005 _res_addr_handler:
30: 28 00000005 # asm("movl _pre_event_fp,r13"); /* set the frame pointer */
31: 29 0000BD4C 0d effffffff5 5d movl _pre_event_fp,r13
32: 30 0000BD53 # if( address_fault_expected )
33: 31 0000BD53 5d efffffffee tstl _address_fault_expected
34: 32 0000BD59 21 03 13 0166 jeql L219
35: 33 0000BD5E # {
36: 34 0000BD5E # asm("movl _post_event_sp,r14"); /* point SP to stack data */
37: 35 0000BD5E 0d efffffffe3 5e movl _post_event_sp,r14
38: 36 0000BD65 # asm("movl (sp)+,_pop_val_1"); /* pop the PC of the instr. */
39: 37 0000BD65 0d 8e efffffffdb movl (sp)+,_pop_val_1
40: 38 0000BD6C # asm("movl (sp)+,_pop_val_2"); /* pop the pushed PSL */
41: 39 0000BD6C 0d 8e efffffffd4 movl (sp)+,_pop_val_2
42: 40 0000BD73 # asm("movl _pre_event_sp,r14"); /* restore stack_pointer */
43: 41 0000BD73 0d efffffffce 5e movl _pre_event_sp,r14
44: 42 0000BD7A # /*
45: 43 0000BD7A # * check the data on the stack
46: 44 0000BD7A # */
47: 45 0000BD7A # if( (pop_val_1 != exp_pc) || /* expected PC ? */
48: 46 0000BD7A # (pop_val_2 != exp_psl) ) /* expected PSL ? */
49: 47 0000BD7A 1d efffffffc7 efffffffc2 cmpl _pop_val_1,_exp_pc
50: 48 0000BD85 21 10 jneq L9999
51: 49 0000BD87 1d efffffffba efffffffb5 cmpl _pop_val_2,_exp_psl
52: 50 0000BD92 21 03 13 012a jeql L220
53: 51 0000BD97 L9999:
54: 52 0000BD97 # {
55: 53 0000BD97 # errcnt++; /* bump the error count */
56: 54 0000BD97 6d efffffffaa incl _errcnt
57: 55 0000BD9D # if( prt_error )
58: 56 0000BD9D 5d efffffffa4 tstl _prt_error
59: 57 0000BDA3 21 03 13 00cb jeql L221
60: 58 0000BDA8 # {
61: 59 0000BDA8 # writes("\ncyle: ");
62: 60 0000BDA8 .data 1
63: 61 000002ec * L223:
64: 62 000002ec * 0A63796C653A2000 .ascii "\12cyle: \0"
65: 63 000002f4 * .text
66: 64 0000BDA8 dd 8f000002ec pushl $L223
67: 65 0000BDAE fe 08 efffffff92 callf $8,_writes
68: 66 0000BDB5 # writed( cycle );
69: 67 0000BDB5 dd efffffff8c pushl _cycle
70: 68 0000BDBB fe 08 efffffff85 callf $8,_writed
71: 69 0000BDC2 # writes(" FPP - ");
72: 70 0000BDC2 .data 1
73: 71 000002f4 * L225:
74: 72 000002f4 * 20465050202D2000 .ascii " FPP - \0"
75: 73 000002fc * .text
76: 74 0000BDC2 dd 8f000002f4 pushl $L225
77: 75 0000BDC8 fe 08 efffffff78 callf $8,_writes
78: 76 0000BDCF # writeh( test_no );
79: 77 0000BDCF dd efffffff72 pushl _test_no
80: 78 0000BDD5 fe 08 efffffff6b callf $8,_writeh
81: 79 0000BDDC # writes(" - invalid stack after Reserved Addr fault");
82: 80 0000BDDC .data 1
83: 81 000002fc * L227:
84: 82 000002fc * 202D20696E76616C696420737 .ascii " - invalid stack after Reserved Addr fault\0"
85: 461636B206166746572205265
86: 7365727665642041646472206
87: 661756C7400
88: 83 00000327 * .text
89: 84 0000BDDC dd 8f000002fc pushl $L227
90: 85 0000BDE2 fe 08 efffffff5e callf $8,_writes
91: 86 0000BDE9 # writes("\n addressing mode = ");
92: 87 0000BDE9 .data 1
93: 88 00000327 * L228:
94: 89 00000327 * 0A2061646472657373696E672 .ascii "\12 addressing mode = \0"
95: 06D6F6465203D2000
96: 90 0000033c * .text
97: 91 0000BDE9 dd 8f00000327 pushl $L228
98: 92 0000BDEF fe 08 efffffff51 callf $8,_writes
99: 93 0000BDF6 # writes( addressing_modes[addr_mode] );
100: 94 0000BDF6 0d efffffff4b 50 movl _addr_mode,r0
101: 95 0000BDFD dd 40efffffff43 pushl _addressing_modes[r0]
102: 96 0000BE04 fe 08 efffffff3c callf $8,_writes
103: 97 0000BE0B # writes("\n stack PC = ");
104: 98 0000BE0B .data 1
105: 99 0000033c * L229:
106: 100 0000033c * 0A20737461636B205043203D2 .ascii "\12 stack PC = \0"
107: 000
108: 101 0000034a * .text
109: 102 0000BE0B dd 8f0000033c pushl $L229
110: 103 0000BE11 fe 08 efffffff2f callf $8,_writes
111: 104 0000BE18 # write32h( pop_val_1 );
112: 105 0000BE18 dd efffffff29 pushl _pop_val_1
113: 106 0000BE1E fe 08 efffffff22 callf $8,_write32h
114: 107 0000BE25 # writes(", PSL = ");
115: 108 0000BE25 .data 1
116: 109 0000034a * L231:
117: 110 0000034a * 2C2050534C203D2000 .ascii ", PSL = \0"
118: 111 00000353 * .text
119: 112 0000BE25 dd 8f0000034a pushl $L231
120: 113 0000BE2B fe 08 efffffff15 callf $8,_writes
121: 114 0000BE32 # write32h( pop_val_2 );
122: 115 0000BE32 dd efffffff0f pushl _pop_val_2
123: 116 0000BE38 fe 08 efffffff08 callf $8,_write32h
124: 117 0000BE3F # writes(", exp PC = ");
125: 118 0000BE3F .data 1
126: 119 00000353 * L232:
127: 120 00000353 * 2C202020657870205043203D2 .ascii ", exp PC = \0"
128: 000
129: 121 00000361 * .text
130: 122 0000BE3F dd 8f00000353 pushl $L232
131: 123 0000BE45 fe 08 effffffefb callf $8,_writes
132: 124 0000BE4C # write32h( exp_pc );
133: 125 0000BE4C dd effffffef5 pushl _exp_pc
134: 126 0000BE52 fe 08 effffffeee callf $8,_write32h
135: 127 0000BE59 # writes(", PSL = ");
136: 128 0000BE59 .data 1
137: 129 00000361 * L233:
138: 130 00000361 * 2C202050534C203D2000 .ascii ", PSL = \0"
139: 131 0000036b * .text
140: 132 0000BE59 dd 8f00000361 pushl $L233
141: 133 0000BE5F fe 08 effffffee1 callf $8,_writes
142: 134 0000BE66 # write32h( exp_psl );
143: 135 0000BE66 dd effffffedb pushl _exp_psl
144: 136 0000BE6C fe 08 effffffed4 callf $8,_write32h
145: 137 0000BE73 # }
146: 138 0000BE73 # if ( halt_flg ) /* if halt on error */
147: 139 0000BE73 L221:
148: 140 0000BE73 5d effffffece tstl _halt_flg
149: 141 0000BE79 31 31 jeql L234
150: 142 0000BE7B # {
151: 143 0000BE7B # asm("movl _test_no,r0"); /* r0 = test number */
152: 144 0000BE7B 0d effffffec6 50 movl _test_no,r0
153: 145 0000BE82 # asm("movl $0,r1"); /* r1 = 0 (subtest number) */
154: 146 0000BE82 0d 00 51 movl $0,r1
155: 147 0000BE85 # asm("movl $1,r2"); /* r2 = error code */
156: 148 0000BE85 0d 01 52 movl $1,r2
157: 149 0000BE88 # asm("movl _cycle,r3"); /* r3 = cycle count */
158: 150 0000BE88 0d effffffeb9 53 movl _cycle,r3
159: 151 0000BE8F # asm("movl _pop_val_1,r4"); /* r4 = actual PC on stack */
160: 152 0000BE8F 0d effffffeb2 54 movl _pop_val_1,r4
161: 153 0000BE96 # asm("movl _pop_val_2,r5"); /* r5 = actual PSL on stck */
162: 154 0000BE96 0d effffffeab 55 movl _pop_val_2,r5
163: 155 0000BE9D # asm("movl _exp_pc,r6"); /* r6 = expected PC */
164: 156 0000BE9D 0d effffffea4 56 movl _exp_pc,r6
165: 157 0000BEA4 # asm("movl _exp_psl,r7"); /* r7 = expected PSL */
166: 158 0000BEA4 0d effffffe9d 57 movl _exp_psl,r7
167: 159 0000BEAB # asm("_resaddr_hlt_1:"); /* PC after the halt */
168: 160 0000BEAB _resaddr_hlt_1:
169: 161 0000BEAB # asm("halt"); /* HALT ... */
170: 162 0000BEAB 00 halt
171: 163 0000BEAC # }
172: 164 0000BEAC # if( loop_on_err )
173: 165 0000BEAC L234:
174: 166 0000BEAC 5d effffffe95 tstl _loop_on_err
175: 167 0000BEB2 31 0d jeql L235
176: 168 0000BEB4 # {
177: 169 0000BEB4 # force_loop = TRUE; /* set the forced loop flag */
178: 170 0000BEB4 0d 01 effffffe8c movl $1,_force_loop
179: 171 0000BEBB # asm("jmp *_loop_addr"); /* and go loop */
180: 172 0000BEBB 71 fffffffe86 jmp *_loop_addr
181: 173 0000BEC1 # }
182: 174 0000BEC1 # } /* end of stack data error */
183: 175 0000BEC1 L235:
184: 176 0000BEC1 # }
185: 177 0000BEC1 L220:
186: 178 0000BEC1 # else /* the address fault was not expected */
187: 179 0000BEC1 13 00a9 jbr L236
188: 180 0000BEC4 L219:
189: 181 0000BEC4 # {
190: 182 0000BEC4 # errcnt++; /* increment the error count */
191: 183 0000BEC4 6d effffffe7d incl _errcnt
192: 184 0000BECA # if( prt_error )
193: 185 0000BECA 5d effffffe77 tstl _prt_error
194: 186 0000BED0 31 63 jeql L237
195: 187 0000BED2 # {
196: 188 0000BED2 # writes("\ncyle: ");
197: 189 0000BED2 .data 1
198: 190 0000036b * L238:
199: 191 0000036b * 0A63796C653A2000 .ascii "\12cyle: \0"
200: 192 00000373 * .text
201: 193 0000BED2 dd 8f0000036b pushl $L238
202: 194 0000BED8 fe 08 effffffe68 callf $8,_writes
203: 195 0000BEDF # writed( cycle );
204: 196 0000BEDF dd effffffe62 pushl _cycle
205: 197 0000BEE5 fe 08 effffffe5b callf $8,_writed
206: 198 0000BEEC # writes(" FPP-");
207: 199 0000BEEC .data 1
208: 200 00000373 * L239:
209: 201 00000373 * 204650502D00 .ascii " FPP-\0"
210: 202 00000379 * .text
211: 203 0000BEEC dd 8f00000373 pushl $L239
212: 204 0000BEF2 fe 08 effffffe4e callf $8,_writes
213: 205 0000BEF9 # writeh( test_no );
214: 206 0000BEF9 dd effffffe48 pushl _test_no
215: 207 0000BEFF fe 08 effffffe41 callf $8,_writeh
216: 208 0000BF06 # writes(" - invalid Reserved Addr fault");
217: 209 0000BF06 .data 1
218: 210 00000379 * L240:
219: 211 00000379 * 202D20696E76616C696420526 .ascii " - invalid Reserved Addr fault\0"
220: 5736572766564204164647220
221: 6661756C7400
222: 212 00000398 * .text
223: 213 0000BF06 dd 8f00000379 pushl $L240
224: 214 0000BF0C fe 08 effffffe34 callf $8,_writes
225: 215 0000BF13 # writes("\n addressing mode = ");
226: 216 0000BF13 .data 1
227: 217 00000398 * L241:
228: 218 00000398 * 0A2061646472657373696E672 .ascii "\12 addressing mode = \0"
229: 06D6F6465203D2000
230: 219 000003ad * .text
231: 220 0000BF13 dd 8f00000398 pushl $L241
232: 221 0000BF19 fe 08 effffffe27 callf $8,_writes
233: 222 0000BF20 # writes( addressing_modes[addr_mode] );
234: 223 0000BF20 0d effffffe21 50 movl _addr_mode,r0
235: 224 0000BF27 dd 40effffffe19 pushl _addressing_modes[r0]
236: 225 0000BF2E fe 08 effffffe12 callf $8,_writes
237: 226 0000BF35 # }
238: 227 0000BF35 # if ( halt_flg ) /* if halt on error */
239: 228 0000BF35 L237:
240: 229 0000BF35 5d effffffe0c tstl _halt_flg
241: 230 0000BF3B 31 1b jeql L242
242: 231 0000BF3D # {
243: 232 0000BF3D # asm("movl _test_no,r0"); /* r0 = test number */
244: 233 0000BF3D 0d effffffe04 50 movl _test_no,r0
245: 234 0000BF44 # asm("clrl r1"); /* r1 = 0 (subtest number) */
246: 235 0000BF44 4d 51 clrl r1
247: 236 0000BF46 # asm("movl $2,r2"); /* r2 = error code */
248: 237 0000BF46 0d 02 52 movl $2,r2
249: 238 0000BF49 # asm("movl _cycle,r3"); /* r3 = cycle count */
250: 239 0000BF49 0d effffffdf8 53 movl _cycle,r3
251: 240 0000BF50 # asm("movl _addr_mode,r4"); /* r4 = addressing mode */
252: 241 0000BF50 0d effffffdf1 54 movl _addr_mode,r4
253: 242 0000BF57 # asm(".globl _resaddr_hlt_2");
254: 243 0000BF57 .globl _resaddr_hlt_2
255: 244 0000BF57 # asm("_resaddr_hlt_2:"); /* PC after the halt */
256: 245 0000BF57 _resaddr_hlt_2:
257: 246 0000BF57 # asm("halt"); /* HALT ... */
258: 247 0000BF57 00 halt
259: 248 0000BF58 # }
260: 249 0000BF58 # if( loop_on_err )
261: 250 0000BF58 L242:
262: 251 0000BF58 5d effffffde9 tstl _loop_on_err
263: 252 0000BF5E 31 0d jeql L243
264: 253 0000BF60 # {
265: 254 0000BF60 # force_loop = TRUE; /* We're going to loop */
266: 255 0000BF60 0d 01 effffffde0 movl $1,_force_loop
267: 256 0000BF67 # asm("jmp *_loop_addr"); /* loop forever */
268: 257 0000BF67 71 fffffffdda jmp *_loop_addr
269: 258 0000BF6D # };
270: 259 0000BF6D L243:
271: 260 0000BF6D # }; /* end of ELSE (unexpected fault) */
272: 261 0000BF6D L236:
273: 262 0000BF6D # asm("jmp *_next_addr"); /* go to the next mode */
274: 263 0000BF6D 71 fffffffdd4 jmp *_next_addr
275: 264 0000BF73 # }
276: 265 0000BF73 40 ret#2
277: 266 0000BF74 .set L215,0x0
278: 267 0000BF74 L217:
279: 268 0000BF74 13 fdd5 jbr L218
280: 269 0000BF77 .data
281: 270 000002ec * .text
282: 271 0000BF77 .align 1
283: 272 0000BF77 .globl _no_res_address
284: 273 0000BF77 _no_res_address:
285: 274 0000BF77 0000 .word L245
286: 275 0000BF79 #
287: 276 0000BF79 #
288: 277 0000BF79 #
289: 278 0000BF79 #
290: 279 0000BF79 #
291: 280 0000BF79 #
292: 281 0000BF79 #
293: 282 0000BF79 #
294: 283 0000BF79 # /****************************************************************************
295: 284 0000BF79 # * No RESERVED_ADDRESS FAULT Occurred routine
296: 285 0000BF79 # *
297: 286 0000BF79 # * The only way to this code is if an expected RESERVED ADDRESS Fault did
298: 287 0000BF79 # * NOT occurr.
299: 288 0000BF79 # ****************************************************************************/
300: 289 0000BF79 # no_res_address()
301: 290 0000BF79 # {
302: 291 0000BF79 13 00b2 jbr L247
303: 292 0000BF7C L248:
304: 293 0000BF7C # asm(".globl _no_res_addr_fault");
305: 294 0000BF7C .globl _no_res_addr_fault
306: 295 0000BF7C # asm("_no_res_addr_fault:"); /* start of "no fault" stuff */
307: 296 0000BF7C _no_res_addr_fault:
308: 297 0000BF7C # errcnt++; /* increment the error count */
309: 298 0000BF7C 6d effffffdc5 incl _errcnt
310: 299 0000BF82 # if( prt_error )
311: 300 0000BF82 5d effffffdbf tstl _prt_error
312: 301 0000BF88 31 63 jeql L249
313: 302 0000BF8A # {
314: 303 0000BF8A # writes("\ncyle: ");
315: 304 0000BF8A .data 1
316: 305 000003ad * L250:
317: 306 000003ad * 0A63796C653A2000 .ascii "\12cyle: \0"
318: 307 000003b5 * .text
319: 308 0000BF8A dd 8f000003ad pushl $L250
320: 309 0000BF90 fe 08 effffffdb0 callf $8,_writes
321: 310 0000BF97 # writed( cycle );
322: 311 0000BF97 dd effffffdaa pushl _cycle
323: 312 0000BF9D fe 08 effffffda3 callf $8,_writed
324: 313 0000BFA4 # writes(" FPP-");
325: 314 0000BFA4 .data 1
326: 315 000003b5 * L251:
327: 316 000003b5 * 204650502D00 .ascii " FPP-\0"
328: 317 000003bb * .text
329: 318 0000BFA4 dd 8f000003b5 pushl $L251
330: 319 0000BFAA fe 08 effffffd96 callf $8,_writes
331: 320 0000BFB1 # writeh( test_no );
332: 321 0000BFB1 dd effffffd90 pushl _test_no
333: 322 0000BFB7 fe 08 effffffd89 callf $8,_writeh
334: 323 0000BFBE # writes(" Expected Reserved Address fault did not occur");
335: 324 0000BFBE .data 1
336: 325 000003bb * L252:
337: 326 000003bb * 2020457870656374656420526 .ascii " Expected Reserved Address fault did not occur\0"
338: 5736572766564204164647265
339: 7373206661756C74206469642
340: 06E6F74206F6363757200
341: 327 000003eb * .text
342: 328 0000BFBE dd 8f000003bb pushl $L252
343: 329 0000BFC4 fe 08 effffffd7c callf $8,_writes
344: 330 0000BFCB # writes("\n Addressing Mode = ");
345: 331 0000BFCB .data 1
346: 332 000003eb * L253:
347: 333 000003eb * 0A2041646472657373696E672 .ascii "\12 Addressing Mode = \0"
348: 04D6F6465203D2000
349: 334 00000400 * .text
350: 335 0000BFCB dd 8f000003eb pushl $L253
351: 336 0000BFD1 fe 08 effffffd6f callf $8,_writes
352: 337 0000BFD8 # writes( addressing_modes[addr_mode] );
353: 338 0000BFD8 0d effffffd69 50 movl _addr_mode,r0
354: 339 0000BFDF dd 40effffffd61 pushl _addressing_modes[r0]
355: 340 0000BFE6 fe 08 effffffd5a callf $8,_writes
356: 341 0000BFED # }
357: 342 0000BFED # if ( halt_flg ) /* if halt on error */
358: 343 0000BFED L249:
359: 344 0000BFED 5d effffffd54 tstl _halt_flg
360: 345 0000BFF3 31 1b jeql L254
361: 346 0000BFF5 # {
362: 347 0000BFF5 # asm("movl _test_no,r0"); /* r0 = test number */
363: 348 0000BFF5 0d effffffd4c 50 movl _test_no,r0
364: 349 0000BFFC # asm("clrl r1"); /* r1 = 0 (subtest number) */
365: 350 0000BFFC 4d 51 clrl r1
366: 351 0000BFFE # asm("movl $3,r2"); /* r2 = error code */
367: 352 0000BFFE 0d 03 52 movl $3,r2
368: 353 0000C001 # asm("movl _cycle,r3"); /* r3 = cycle count */
369: 354 0000C001 0d effffffd40 53 movl _cycle,r3
370: 355 0000C008 # asm("movl _addr_mode,r4"); /* r4 = addressing mode */
371: 356 0000C008 0d effffffd39 54 movl _addr_mode,r4
372: 357 0000C00F # asm("_res_addr_hlt3:"); /* PC after the halt */
373: 358 0000C00F _res_addr_hlt3:
374: 359 0000C00F # asm("halt"); /* HALT ... */
375: 360 0000C00F 00 halt
376: 361 0000C010 # }
377: 362 0000C010 # if( loop_on_err )
378: 363 0000C010 L254:
379: 364 0000C010 5d effffffd31 tstl _loop_on_err
380: 365 0000C016 31 0f jeql L255
381: 366 0000C018 # {
382: 367 0000C018 # force_loop = TRUE; /* We're going to loop */
383: 368 0000C018 0d 01 effffffd28 movl $1,_force_loop
384: 369 0000C01F # asm("jmp *_loop_addr"); /* loop forever */
385: 370 0000C01F 71 fffffffd22 jmp *_loop_addr
386: 371 0000C025 # } else
387: 372 0000C025 11 06 jbr L256
388: 373 0000C027 L255:
389: 374 0000C027 # asm("jmp *_next_addr");; /* go to the next mode */
390: 375 0000C027 71 fffffffd1a jmp *_next_addr
391: 376 0000C02D L256:
392: 377 0000C02D # }
393: 378 0000C02D 40 ret#2
394: 379 0000C02E .set L245,0x0
395: 380 0000C02E L247:
396: 381 0000C02E 13 ff4b jbr L248
397: 382 0000C031 .data
398: 383 000002ec * #
399: 384 000002ec * #
400: 385 000002ec * #
401: 386 000002ec * #
402: 386 000002ec * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.