|
|
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.