Annotation of cci/d/dmp4/monitor.c, revision 1.1.1.1

1.1       root        1: 
                      2: #include "dmp_defs.h"
                      3: 
                      4: /*********************************************************************
                      5: *
                      6: *      MONITOR FOR THE DEMAND PAGING TESTS
                      7: *
                      8: *  11-Feb-85  : written
                      9: *
                     10: *********************************************************************/
                     11: 
                     12: monitor()
                     13: {
                     14: int sbtst_indx;
                     15:        asm("moval (fp),_monitor_fp");  /* save the frame pointer */
                     16:        asm("moval (sp),_monitor_sp");  /* save the stack pointer */
                     17:        force_loop = FALSE;             /* clear the force loop flag */
                     18:        cycle = 0;                      /* clear the cycle count */
                     19:        errcnt = 0;                     /* clear the error count */
                     20: /*
                     21:  * Print the Header information and enable the Data Cache if desired
                     22: */
                     23:        if( prt_hdrs ) {
                     24:            writes("\nFPP Demand Paging Test");
                     25:            if( no_fpp_wcs )
                     26:                 writes(" - FPP is NOT installed");
                     27:            else
                     28:                 writes(" - FPP is installed");
                     29:            if( user_mode )
                     30:                writes(".  User Mode");
                     31:            else
                     32:                writes(".  Kernal Mode");
                     33:        }
                     34:        if( en_data_cache ) {
                     35:            asm("mtpr $1,$25");                 /* purge all data cache pages */
                     36:            asm("mtpr $1,$27");                 /* enable the data cache */
                     37:            if( prt_hdrs )
                     38:                writes(", Data Cache Enabled:\n");
                     39:        } else {
                     40:            asm("mtpr $2,$27");                 /* disable the data cache */
                     41:            if( prt_hdrs )
                     42:                writes(", Data Cache Disabled:\n");
                     43:        }
                     44:        if( count )
                     45:            nonstop = FALSE;                    /* user specfied # of cycles */
                     46:        else
                     47:            nonstop = TRUE;                     /* continuous testing */
                     48: /*
                     49:  * Check to see if they've asked for PUSHD in the Kernal mode ( a no no )
                     50: */
                     51:        valid_test = TRUE;
                     52:        if( (run_list) && (!user_mode) ) {
                     53:             sbtst_indx = run_list -1;
                     54:             if( inst_tbl[sbtst_indx].inst_code == PUSHD_OP_CODE ) {
                     55:                        writes(
                     56:                      "PUSHD is not a valid instruction in the Kernal Mode\n");
                     57:                        valid_test = FALSE;
                     58:             }
                     59:        }
                     60:        if( valid_test ) {
                     61:           for( cycle = 1; ( (cycle <= count) || nonstop ); cycle++ ) {
                     62:              if( (prt_hdrs) && (cycle != 1) )
                     63:                 writec('.');           /* show we're still running */
                     64:              if( (run_list > 0) && (run_list <= NO_INSTRUCTIONS) ) {
                     65:                 test_no  = run_list;
                     66:                 sbtst_indx = run_list - 1;
                     67:                 if( (prt_hdrs) && (cycle == 1) )
                     68:                    writes( inst_tbl[ sbtst_indx ].name );
                     69:                 sched_test( sbtst_indx );
                     70:              } 
                     71:               else     /* test ALL applicable instructions */
                     72:              {
                     73:                 for(sbtst_indx=0;sbtst_indx<NO_INSTRUCTIONS;sbtst_indx++) {
                     74:                    test_no = sbtst_indx + 1;
                     75:                    if( (user_mode) ||
                     76:                        (inst_tbl[sbtst_indx].inst_code != PUSHD_OP_CODE) ) {
                     77:                       if( (prt_hdrs) && (cycle == 1) ) {
                     78:                          if( (inst_tbl[sbtst_indx].inst_code==LDD_OP_CODE) ||
                     79:                              (inst_tbl[sbtst_indx].inst_code==CVDF_OP_CODE) )
                     80:                                 writec('\n');          /* start a new line */
                     81:                          writes( inst_tbl[ sbtst_indx ].name );
                     82:                       }
                     83:                       sched_test( sbtst_indx );
                     84:                       asm("tst_all_return:");;
                     85:                    }  /* end of IF (not PUSHD in Kernal mode) */
                     86:                 }  /* end of FOR (each instruction) */
                     87:              }  /* end of ELSE test all instructions */
                     88:              asm("tst_one_return:");;
                     89:           } /* end of test cycles  */
                     90:           cycle--;                     /* correct cycle count */
                     91:        }  /* end of IF (valid test)  */
                     92:        if( prt_hdrs ) {
                     93: /*         if( !error )  */
                     94:                 writec('\n');          /* new line if no current errors */
                     95:            writes("Cycles Complete = ");
                     96:            writed( cycle );
                     97:            if( valid_test ) {
                     98:                if( errcnt ) {
                     99:                    writes(",  Error Count = " );
                    100:                    writed( errcnt );
                    101:                    writes(",  Test Complete\n");
                    102:                } else {
                    103:                    writes(",  TEST PASSED -NO ERRORS!!! \n");
                    104:                }
                    105:            }  /* end of IF (valid test) */
                    106:        };  /* end of IF (print headers) */
                    107:        asm("movl _errcnt,r0");         /* set error count for halt */
                    108:        asm("bneq 1f");
                    109:        asm("tstl _valid_test");        /* were any tests run?      */
                    110:        asm("beql 1f");                 /* r0 = 0 if no tests run   */
                    111:        asm("movl $0xCAFEBABE,r0");;    /* set the no-error flag    */
                    112:        asm("1:");
                    113:        asm("movl _OPTIONS,r1");        /* restore options to r1  */
                    114:        asm("movl _cycle,r2");          /* move cycle count to r2 */
                    115:        asm("halt");;                   /* ALL DONE - HALT */
                    116: /*
                    117:  * This is the return from an unexpected fpp event
                    118: */
                    119:                asm(".globl _mon_ret");
                    120:                asm("_mon_ret:");
                    121:                asm("movl _monitor_fp,fp");     /* restore the frame ptr  */
                    122:                asm("movl _monitor_sp,sp");     /* restore the stack ptr  */
                    123:                asm("tstl _run_list");          /* test all instructions? */
                    124:                asm("beql 1f");
                    125:                asm("jmp tst_one_return");      /* go to next test cycle  */
                    126:                asm("1:");
                    127:                asm("jmp tst_all_return");      /* test next instruction  */
                    128:                asm(".align 2");
                    129:                asm(".globl return");
                    130:                asm("return:");
                    131:                asm(".long _mon_ret");          /* pointer to return addr */
                    132: }
                    133:  
                    134: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.