|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000254 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _monitor ! 6: 6 00000000 _monitor: ! 7: 7 0000C1E4 0000 .word L277 ! 8: 8 0000C1E6 # ! 9: 9 0000C1E6 # #include "macro4_defs.h" ! 10: 10 0000C1E6 # ! 11: 11 0000C1E6 # /********************************************************************* ! 12: 12 0000C1E6 # * ! 13: 13 0000C1E6 # * MONITOR FOR THE FPP INSTRUCTION TESTS ! 14: 14 0000C1E6 # * ! 15: 15 0000C1E6 # * 20-Jul-85 : written ! 16: 16 0000C1E6 # *********************************************************************/ ! 17: 17 0000C1E6 # monitor() ! 18: 18 0000C1E6 # { ! 19: 19 0000C1E6 13 01fe jbr L279 ! 20: 20 0000C1E9 L280: ! 21: 21 0000C1E9 # int no_subtests; /* number of tests in the table */ ! 22: 22 0000C1E9 # force_loop = FALSE; /* clear the 'force loop' flag */ ! 23: 23 0000C1E9 4d effffffff5 clrl _force_loop ! 24: 24 0000C1EF # cycle = 0; /* clear the cycle count */ ! 25: 25 0000C1EF 4d efffffffef clrl _cycle ! 26: 26 0000C1F5 # errcnt = 0; /* clear the error count */ ! 27: 27 0000C1F5 4d efffffffe9 clrl _errcnt ! 28: 28 0000C1FB # error = FALSE; /* clear the current error flag */ ! 29: 29 0000C1FB 4d efffffffe3 clrl _error ! 30: 30 0000C201 # if( no_fpp_wcs ) { ! 31: 31 0000C201 5d efffffffdd tstl _no_fpp_wcs ! 32: 32 0000C207 31 15 jeql L281 ! 33: 33 0000C209 # test_tbl = no_fpp_test_tbl; /* use the NO-FPP tests */ ! 34: 34 0000C209 0d 8f00000000 efffffffd0 movl $_no_fpp_test_tbl,_test_tbl ! 35: 35 0000C214 # no_subtests = no_fpp_test_cnt; ! 36: 36 0000C214 0d efffffffca adc8 movl _no_fpp_test_cnt,-56(fp) ! 37: 37 0000C21C # } else { ! 38: 38 0000C21C 11 13 jbr L282 ! 39: 39 0000C21E L281: ! 40: 40 0000C21E # test_tbl = fpp_test_tbl; /* use the FPP tests */ ! 41: 41 0000C21E 0d 8f00000000 efffffffbb movl $_fpp_test_tbl,_test_tbl ! 42: 42 0000C229 # no_subtests = fpp_test_cnt; ! 43: 43 0000C229 0d efffffffb5 adc8 movl _fpp_test_cnt,-56(fp) ! 44: 44 0000C231 # } ! 45: 45 0000C231 L282: ! 46: 46 0000C231 # /* ! 47: 47 0000C231 # * Print the Header information and enable the Data Cache if desired ! 48: 48 0000C231 # */ ! 49: 49 0000C231 # if( prt_hdrs ) { ! 50: 50 0000C231 5d efffffffad tstl _prt_hdrs ! 51: 51 0000C237 31 31 jeql L283 ! 52: 52 0000C239 # writes("\nMacro4 Test"); ! 53: 53 0000C239 .data 1 ! 54: 54 00000254 * L285: ! 55: 55 00000254 * 0A4D6163726F3420546573740 .ascii "\12Macro4 Test\0" ! 56: 0 ! 57: 56 00000261 * .text ! 58: 57 0000C239 dd 8f00000254 pushl $L285 ! 59: 58 0000C23F fe 08 efffffff9e callf $8,_writes ! 60: 59 0000C246 # if( no_fpp_wcs ) ! 61: 60 0000C246 5d efffffff98 tstl _no_fpp_wcs ! 62: 61 0000C24C 31 0f jeql L286 ! 63: 62 0000C24E # writes(" - FPP is NOT installed"); ! 64: 63 0000C24E .data 1 ! 65: 64 00000261 * L287: ! 66: 65 00000261 * 202D20465050206973204E4F5 .ascii " - FPP is NOT installed\0" ! 67: 420696E7374616C6C656400 ! 68: 66 00000279 * .text ! 69: 67 0000C24E dd 8f00000261 pushl $L287 ! 70: 68 0000C254 fe 08 efffffff89 callf $8,_writes ! 71: 69 0000C25B # else ! 72: 70 0000C25B 11 0d jbr L288 ! 73: 71 0000C25D L286: ! 74: 72 0000C25D # writes(" - FPP is installed"); ! 75: 73 0000C25D .data 1 ! 76: 74 00000279 * L289: ! 77: 75 00000279 * 202D2046505020697320696E7 .ascii " - FPP is installed\0" ! 78: 374616C6C656400 ! 79: 76 0000028d * .text ! 80: 77 0000C25D dd 8f00000279 pushl $L289 ! 81: 78 0000C263 fe 08 efffffff7a callf $8,_writes ! 82: 79 0000C26A L288: ! 83: 80 0000C26A # } ! 84: 81 0000C26A # if( en_data_cache ) { ! 85: 82 0000C26A L283: ! 86: 83 0000C26A 5d efffffff74 tstl _en_data_cache ! 87: 84 0000C270 31 1d jeql L290 ! 88: 85 0000C272 # if( prt_hdrs ) ! 89: 86 0000C272 5d efffffff6c tstl _prt_hdrs ! 90: 87 0000C278 31 0d jeql L291 ! 91: 88 0000C27A # writes(" - Data Cache Enabled: \n"); ! 92: 89 0000C27A .data 1 ! 93: 90 0000028d * L292: ! 94: 91 0000028d * 20202D2044617461204361636 .ascii " - Data Cache Enabled: \12\0" ! 95: 86520456E61626C65643A200A ! 96: 00 ! 97: 92 000002a7 * .text ! 98: 93 0000C27A dd 8f0000028d pushl $L292 ! 99: 94 0000C280 fe 08 efffffff5d callf $8,_writes ! 100: 95 0000C287 # asm("mtpr $1,$25"); /* purge all data cache pages */ ! 101: 96 0000C287 L291: ! 102: 97 0000C287 ad 01 19 mtpr $1,$25 ! 103: 98 0000C28A # asm("mtpr $1,$27"); /* enable the data cache */ ! 104: 99 0000C28A ad 01 1b mtpr $1,$27 ! 105: 100 0000C28D # } else { ! 106: 101 0000C28D 11 18 jbr L293 ! 107: 102 0000C28F L290: ! 108: 103 0000C28F # if( prt_hdrs ) ! 109: 104 0000C28F 5d efffffff4f tstl _prt_hdrs ! 110: 105 0000C295 31 0d jeql L294 ! 111: 106 0000C297 # writes(" - Data Cache Disabled: \n"); ! 112: 107 0000C297 .data 1 ! 113: 108 000002a7 * L295: ! 114: 109 000002a7 * 20202D2044617461204361636 .ascii " - Data Cache Disabled: \12\0" ! 115: 8652044697361626C65643A20 ! 116: 0A00 ! 117: 110 000002c2 * .text ! 118: 111 0000C297 dd 8f000002a7 pushl $L295 ! 119: 112 0000C29D fe 08 efffffff40 callf $8,_writes ! 120: 113 0000C2A4 # asm("mtpr $2,$27"); /* disable the data cache */ ! 121: 114 0000C2A4 L294: ! 122: 115 0000C2A4 ad 02 1b mtpr $2,$27 ! 123: 116 0000C2A7 # } ! 124: 117 0000C2A7 L293: ! 125: 118 0000C2A7 # /* ! 126: 119 0000C2A7 # * Check the run list to see if a specific test is called for ! 127: 120 0000C2A7 # */ ! 128: 121 0000C2A7 # for( cycle = 1; ( (cycle <= count) || nonstop ); cycle++ ) { ! 129: 122 0000C2A7 0d 01 efffffff36 movl $1,_cycle ! 130: 123 0000C2AE L298: ! 131: 124 0000C2AE 1d efffffff30 efffffff2b cmpl _cycle,_count ! 132: 125 0000C2B9 51 0b jleq L9999 ! 133: 126 0000C2BB 5d efffffff23 tstl _nonstop ! 134: 127 0000C2C1 21 03 13 0092 jeql L297 ! 135: 128 0000C2C6 L9999: ! 136: 129 0000C2C6 # if( (prt_hdrs) && (cycle != 1) ) /* show we're still running */ ! 137: 130 0000C2C6 5d efffffff18 tstl _prt_hdrs ! 138: 131 0000C2CC 31 12 jeql L299 ! 139: 132 0000C2CE 1d efffffff10 01 cmpl _cycle,$1 ! 140: 133 0000C2D5 31 09 jeql L299 ! 141: 134 0000C2D7 # writec('.'); ! 142: 135 0000C2D7 dd 2e pushl $46 ! 143: 136 0000C2D9 fe 08 efffffff04 callf $8,_writec ! 144: 137 0000C2E0 # if( (run_list > 0) && /* run 1 test only */ ! 145: 138 0000C2E0 L299: ! 146: 139 0000C2E0 # (run_list <= no_subtests) ) { ! 147: 140 0000C2E0 5d effffffefe tstl _run_list ! 148: 141 0000C2E6 51 33 jleq L301 ! 149: 142 0000C2E8 1d effffffef6 adc8 cmpl _run_list,-56(fp) ! 150: 143 0000C2F0 41 29 jgtr L301 ! 151: 144 0000C2F2 # test_no = run_list; ! 152: 145 0000C2F2 0d effffffeec effffffee7 movl _run_list,_test_no ! 153: 146 0000C2FD # test_index = run_list - 1; ! 154: 147 0000C2FD 3c 01 effffffee0 50 subl3 $1,_run_list,r0 ! 155: 148 0000C305 0d 50 effffffed8 movl r0,_test_index ! 156: 149 0000C30C # sched_test( test_index ); /* run the test */ ! 157: 150 0000C30C dd effffffed2 pushl _test_index ! 158: 151 0000C312 fe 08 ef000000d5 callf $8,_sched_test ! 159: 152 0000C319 # } else { /* run all tests */ ! 160: 153 0000C319 11 34 jbr L303 ! 161: 154 0000C31B L301: ! 162: 155 0000C31B # for(test_index=0; test_index<no_subtests; test_index++) { ! 163: 156 0000C31B 4d effffffec3 clrl _test_index ! 164: 157 0000C321 L306: ! 165: 158 0000C321 1d effffffebd adc8 cmpl _test_index,-56(fp) ! 166: 159 0000C329 81 24 jgeq L305 ! 167: 160 0000C32B # test_no = test_index + 1; ! 168: 161 0000C32B 1c 01 effffffeb2 50 addl3 $1,_test_index,r0 ! 169: 162 0000C333 0d 50 effffffeaa movl r0,_test_no ! 170: 163 0000C33A # sched_test( test_index ); /* run the test */ ! 171: 164 0000C33A dd effffffea4 pushl _test_index ! 172: 165 0000C340 fe 08 ef000000a7 callf $8,_sched_test ! 173: 166 0000C347 # } ! 174: 167 0000C347 L304: ! 175: 168 0000C347 6d effffffe97 incl _test_index ! 176: 169 0000C34D 11 d2 jbr L306 ! 177: 170 0000C34F L305: ! 178: 171 0000C34F # } /* end of test-all-instructions */ ! 179: 172 0000C34F L303: ! 180: 173 0000C34F # } /* end of test cycles - done with the test */ ! 181: 174 0000C34F L296: ! 182: 175 0000C34F 6d effffffe8f incl _cycle ! 183: 176 0000C355 13 ff56 jbr L298 ! 184: 177 0000C358 L297: ! 185: 178 0000C358 # cycle--; /* correct cycle count */ ! 186: 179 0000C358 7d effffffe86 decl _cycle ! 187: 180 0000C35E # if( prt_hdrs ) { ! 188: 181 0000C35E 5d effffffe80 tstl _prt_hdrs ! 189: 182 0000C364 31 61 jeql L307 ! 190: 183 0000C366 # /* if( !error ) */ ! 191: 184 0000C366 # writec('\n'); /* new line if no current errors */ ! 192: 185 0000C366 dd 0a pushl $10 ! 193: 186 0000C368 fe 08 effffffe75 callf $8,_writec ! 194: 187 0000C36F # writes("Cycles Complete = "); ! 195: 188 0000C36F .data 1 ! 196: 189 000002c2 * L308: ! 197: 190 000002c2 * 4379636C657320436F6D706C6 .ascii "Cycles Complete = \0" ! 198: 57465203D2000 ! 199: 191 000002d5 * .text ! 200: 192 0000C36F dd 8f000002c2 pushl $L308 ! 201: 193 0000C375 fe 08 effffffe68 callf $8,_writes ! 202: 194 0000C37C # writed( cycle ); ! 203: 195 0000C37C dd effffffe62 pushl _cycle ! 204: 196 0000C382 fe 08 effffffe5b callf $8,_writed ! 205: 197 0000C389 # if( errcnt ) { ! 206: 198 0000C389 5d effffffe55 tstl _errcnt ! 207: 199 0000C38F 31 29 jeql L310 ! 208: 200 0000C391 # writes(", Error Count = " ); ! 209: 201 0000C391 .data 1 ! 210: 202 000002d5 * L311: ! 211: 203 000002d5 * 2C20204572726F7220436F756 .ascii ", Error Count = \0" ! 212: E74203D2000 ! 213: 204 000002e7 * .text ! 214: 205 0000C391 dd 8f000002d5 pushl $L311 ! 215: 206 0000C397 fe 08 effffffe46 callf $8,_writes ! 216: 207 0000C39E # writed( errcnt ); ! 217: 208 0000C39E dd effffffe40 pushl _errcnt ! 218: 209 0000C3A4 fe 08 effffffe39 callf $8,_writed ! 219: 210 0000C3AB # writes(", Test Complete\n"); ! 220: 211 0000C3AB .data 1 ! 221: 212 000002e7 * L312: ! 222: 213 000002e7 * 2C20205465737420436F6D706 .ascii ", Test Complete\12\0" ! 223: C6574650A00 ! 224: 214 000002f9 * .text ! 225: 215 0000C3AB dd 8f000002e7 pushl $L312 ! 226: 216 0000C3B1 fe 08 effffffe2c callf $8,_writes ! 227: 217 0000C3B8 # } else ! 228: 218 0000C3B8 11 0d jbr L313 ! 229: 219 0000C3BA L310: ! 230: 220 0000C3BA # writes(", TEST PASSED -NO ERRORS!!! \n"); ! 231: 221 0000C3BA .data 1 ! 232: 222 000002f9 * L314: ! 233: 223 000002f9 * 2C20205445535420504153534 .ascii ", TEST PASSED -NO ERRORS!!! \12\0" ! 234: 544202D4E4F204552524F5253 ! 235: 212121200A00 ! 236: 224 00000318 * .text ! 237: 225 0000C3BA dd 8f000002f9 pushl $L314 ! 238: 226 0000C3C0 fe 08 effffffe1d callf $8,_writes ! 239: 227 0000C3C7 L313: ! 240: 228 0000C3C7 # }; ! 241: 229 0000C3C7 L307: ! 242: 230 0000C3C7 # /* ! 243: 231 0000C3C7 # * Set up the registers to halt ! 244: 232 0000C3C7 # */ ! 245: 233 0000C3C7 # asm("movl _errcnt,r0"); /* set error count for halt */ ! 246: 234 0000C3C7 0d effffffe17 50 movl _errcnt,r0 ! 247: 235 0000C3CE # asm("bneq 1f"); ! 248: 236 0000C3CE 21 07 bneq 1f ! 249: 237 0000C3D0 # asm("movl $0xCAFEBABE,r0");; /* set the no-error flag */ ! 250: 238 0000C3D0 0d 8fcafebabe 50 movl $0xCAFEBABE,r0 ! 251: 239 0000C3D7 # asm("1:"); ! 252: 240 0000C3D7 1: ! 253: 241 0000C3D7 # asm("movl _OPTIONS,r1"); /* restore options to r1 */ ! 254: 242 0000C3D7 0d effffffe07 51 movl _OPTIONS,r1 ! 255: 243 0000C3DE # asm("movl _cycle,r2"); /* move cycle count to r2 */ ! 256: 244 0000C3DE 0d effffffe00 52 movl _cycle,r2 ! 257: 245 0000C3E5 # asm("halt");; ! 258: 246 0000C3E5 00 halt ! 259: 247 0000C3E6 # } ! 260: 248 0000C3E6 40 ret#2 ! 261: 249 0000C3E7 .set L277,0x0 ! 262: 250 0000C3E7 L279: ! 263: 251 0000C3E7 3c 38 5d 5e subl3 $56,fp,sp ! 264: 252 0000C3EB 13 fdfb jbr L280 ! 265: 253 0000C3EE .data ! 266: 254 00000254 * .text ! 267: 255 0000C3EE .align 1 ! 268: 256 0000C3EE .globl _sched_test ! 269: 257 0000C3EE _sched_test: ! 270: 258 0000C3EE 0000 .word L315 ! 271: 259 0000C3F0 # ! 272: 260 0000C3F0 # ! 273: 261 0000C3F0 # ! 274: 262 0000C3F0 # /*********************************************************************** ! 275: 263 0000C3F0 # * ! 276: 264 0000C3F0 # * Start the current subtest ! 277: 265 0000C3F0 # * ! 278: 266 0000C3F0 # * The test may come back here after an unexpected event so the monitor's ! 279: 267 0000C3F0 # * stack and frame pointers are saved. Funny things happen if we try to ! 280: 268 0000C3F0 # * exit from this routine with the wrong frame pointer. Unexpected events ! 281: 269 0000C3F0 # * will either return indirectly through "return" or they will just halt. ! 282: 270 0000C3F0 # * ! 283: 271 0000C3F0 # ***********************************************************************/ ! 284: 272 0000C3F0 # sched_test( test_index ) ! 285: 273 0000C3F0 # int test_index; ! 286: 274 0000C3F0 # { ! 287: 275 0000C3F0 11 43 jbr L317 ! 288: 276 0000C3F2 L318: ! 289: 277 0000C3F2 # asm("moval (r13),_monitor_fp"); /* save the frame ptr */ ! 290: 278 0000C3F2 ed 6d effffffdeb moval (r13),_monitor_fp ! 291: 279 0000C3F9 # asm("moval (r14),_monitor_sp"); /* save the stack ptr */ ! 292: 280 0000C3F9 ed 6e effffffde4 moval (r14),_monitor_sp ! 293: 281 0000C400 # test_ptr = test_tbl[ test_index ]; /* get ptr to test */ ! 294: 282 0000C400 0d ad04 50 movl 4(fp),r0 ! 295: 283 0000C404 48 02 50 50 shll $2,r0,r0 ! 296: 284 0000C408 1c 50 effffffdd5 50 addl3 r0,_test_tbl,r0 ! 297: 285 0000C410 0d 60 effffffdcd movl (r0),_test_ptr ! 298: 286 0000C417 # asm("jmp *_test_ptr"); /* execute the test */ ! 299: 287 0000C417 71 fffffffdc7 jmp *_test_ptr ! 300: 288 0000C41D # asm(".globl _sched_return"); ! 301: 289 0000C41D .globl _sched_return ! 302: 290 0000C41D # asm("_sched_return:"); /* return here after the test */ ! 303: 291 0000C41D _sched_return: ! 304: 292 0000C41D # asm("nop"); ! 305: 293 0000C41D 10 nop ! 306: 294 0000C41E # asm("movl _monitor_fp,r13"); /* restore the frame pointer */ ! 307: 295 0000C41E 0d effffffdc0 5d movl _monitor_fp,r13 ! 308: 296 0000C425 # asm("movl _monitor_sp,r14");; /* restore the stack pointer */ ! 309: 297 0000C425 0d effffffdb9 5e movl _monitor_sp,r14 ! 310: 298 0000C42C # if( FALSE ) { ! 311: 299 0000C42C 11 06 jbr L319 ! 312: 300 0000C42E # asm(".align 2"); ! 313: 301 0000C42E 0000 .align 2 ! 314: 302 0000C430 # asm(".globl return"); /* event return is through here */ ! 315: 303 0000C430 .globl return ! 316: 304 0000C430 # asm("return:"); ! 317: 305 0000C430 return: ! 318: 306 0000C430 # asm(".long _sched_return");; ! 319: 307 0000C430 00000239 .long _sched_return ! 320: 308 0000C434 # } ! 321: 309 0000C434 # } ! 322: 310 0000C434 L319: ! 323: 311 0000C434 40 ret#2 ! 324: 312 0000C435 .set L315,0x0 ! 325: 313 0000C435 L317: ! 326: 314 0000C435 11 bb jbr L318 ! 327: 315 0000C437 .data ! 328: 316 00000254 * # ! 329: 316 00000254 * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.