Annotation of cci/d/dmp4/monitor.c, revision 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.