|
|
1.1 ! root 1: ! 2: #include "evt_defs.h" ! 3: ! 4: /********************************************************************* ! 5: * ! 6: * MONITOR FOR THE FPP EVENTS TESTS ! 7: * ! 8: * 22-Mar-85 : written ! 9: * 10-Jul-85 : don't run pipe test if running all tests on a specified op-code ! 10: * 16-Jul-85 : added NO-FPP test capability ! 11: *********************************************************************/ ! 12: monitor() ! 13: { ! 14: struct test_t *test_tbl; /* pointer to the test table to use */ ! 15: int no_subtests; /* number of tests in the table */ ! 16: force_loop = FALSE; /* clear the 'force loop' flag */ ! 17: valid_test = FALSE; /* clear the 'a test was run' flag */ ! 18: cycle = 0; /* clear the cycle count */ ! 19: errcnt = 0; /* clear the error count */ ! 20: error = FALSE; /* clear the current error flag */ ! 21: if( no_fpp_wcs ) { ! 22: test_tbl = no_fpp_test_tbl; /* use the NO-FPP tests */ ! 23: no_subtests = no_fpp_test_cnt; ! 24: } else { ! 25: test_tbl = fpp_test_tbl; /* use the FPP tests */ ! 26: no_subtests = fpp_test_cnt; ! 27: } ! 28: /* ! 29: * Print the Header information and enable the Data Cache if desired ! 30: */ ! 31: if( prt_hdrs ) { ! 32: writes("\nFPP Events Test"); ! 33: if( no_fpp_wcs ) ! 34: writes(" - FPP is NOT installed"); ! 35: else ! 36: writes(" - FPP is installed"); ! 37: } ! 38: if( en_data_cache ) { ! 39: if( prt_hdrs ) ! 40: writes(", Data Cache Enabled: "); ! 41: asm("mtpr $1,$25"); /* purge all data cache pages */ ! 42: asm("mtpr $1,$27");; /* enable the data cache */ ! 43: } else { ! 44: if( prt_hdrs ) ! 45: writes(", Data Cache Disabled: "); ! 46: asm("mtpr $2,$27"); /* disable the data cache */ ! 47: } ! 48: /* ! 49: * Check the run list to see if a specific test is called for ! 50: */ ! 51: for( cycle = 1; ( (cycle <= count) || nonstop ); cycle++ ) { ! 52: if( (prt_hdrs) && (cycle != 1) ) /* show we're still running */ ! 53: writec('.'); ! 54: if( (run_list > 0) && (run_list <= no_subtests) ) { ! 55: test_no = run_list; ! 56: test_index = run_list - 1; ! 57: if( (prt_hdrs) && (cycle == 1) ) { ! 58: /* if( !error ) /* */ ! 59: writec('\n'); ! 60: writes( test_tbl[ test_index ].name ); ! 61: }; ! 62: (test_tbl[ test_index ].test)(); ! 63: } ! 64: else /* run all tests */ ! 65: { ! 66: for(test_index=0; test_index<no_subtests; test_index++) { ! 67: test_no = test_index + 1; ! 68: if( (no_fpp_wcs) || /* don't run pipe test w/ FPP WCS */ ! 69: (!evt_inst) || /* and a specified instruction */ ! 70: (test_index != pipe_test_index) ) { ! 71: if( (prt_hdrs) && (cycle == 1) ) { ! 72: /* if( !error ) /* */ ! 73: writec('\n'); ! 74: writes( test_tbl[ test_index ].name ); ! 75: }; ! 76: (test_tbl[ test_index ].test)(); ! 77: } ! 78: } ! 79: } /* end of test-all-instructions */ ! 80: } /* end of test cycles - done with the test */ ! 81: cycle--; /* correct cycle count */ ! 82: if( prt_hdrs ) { ! 83: /* if( !error ) /* */ ! 84: writec('\n');; /* new line if no current errors */ ! 85: if( valid_test ) { /* were any tests actually run? */ ! 86: writes("Cycles Complete = "); ! 87: writed( cycle ); ! 88: if( errcnt ) { ! 89: writes(", Error Count = " ); ! 90: writed( errcnt ); ! 91: writes(", Test Complete\n"); ! 92: } else ! 93: writes(", TEST PASSED -NO ERRORS!!! \n"); ! 94: } else { ! 95: writes("FPEVENT: no tests were run with instruction "); ! 96: writeh( evt_inst ); ! 97: writec('\n'); ! 98: } ! 99: }; ! 100: /* ! 101: * Set up the registers to halt ! 102: */ ! 103: asm("movl _errcnt,r0"); /* set error count for halt */ ! 104: asm("bneq 1f"); ! 105: asm("tstl _valid_test"); /* were any tests run? */ ! 106: asm("beql 1f"); /* r0 = 0 if no tests run */ ! 107: asm("movl $0xCAFEBABE,r0");; /* set the no-error flag */ ! 108: asm("1:"); ! 109: asm("movl _OPTIONS,r1"); /* restore options to r1 */ ! 110: asm("movl _cycle,r2"); /* move cycle count to r2 */ ! 111: asm("movl _evt_inst,r3"); /* move inst op-code to r3 */ ! 112: asm("halt");; ! 113: } ! 114: ! 115:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.