Annotation of cci/d/fpevent/resop_test.c, revision 1.1

1.1     ! root        1: 
        !             2: #include "evt_defs.h"
        !             3: 
        !             4: /*
        !             5:  ********************************************************************
        !             6:  *
        !             7:  *     MONITOR FOR THE FPP RESERVED OPERAND EVENT TEST
        !             8:  *
        !             9:  *  22-Mar-85  : written
        !            10:  *  16-Jul-85  : changed to match "resop_tbl" changes
        !            11:  *  24-Jul-85  : don't run LOGF with the "no-fpp" firmware
        !            12:  *
        !            13:  ********************************************************************
        !            14: */
        !            15: resop_test()
        !            16: {
        !            17:        event_msg = "Reserved Operand";
        !            18:        test_event = RESOP_CODE;
        !            19:        disable_mask = 0;               /* don't disable any events   */
        !            20:        evt_disabled = FALSE;           /* expected event is enabled  */
        !            21:        if( evt_inst ) {                /* was the op-code specified? */
        !            22:              inst_index = get_resop_index( evt_inst );
        !            23:              if( inst_index < 0 ) { 
        !            24:                   if( (prt_hdrs) && (cycle == 1) ) {  /* no reserved ops */
        !            25:                         writes(
        !            26:                     "There are no floating RESERVED OPERANDS with op-code" );
        !            27:                         writeh( evt_inst );    /* print the ersatz op-code */
        !            28:                         writec('\n');
        !            29:                         error = TRUE;  /* needed for line feed control */
        !            30:                   }
        !            31:              } else 
        !            32:                   test_resop_inst();   /* test the instruction */
        !            33:        } else                          /* test all applicable op-codes */
        !            34:              for(inst_index=0; inst_index < size_resop_tbl; inst_index++)
        !            35:                   if( (!no_fpp_wcs) || 
        !            36:                       (resop_tbl[inst_index].inst_code != LOGF_OP_CODE) )
        !            37:                         test_resop_inst();
        !            38: }
        !            39:  
        !            40: 
        !            41: 
        !            42: /*
        !            43:  ***************************************************************************
        !            44:  *
        !            45:  *             Run the Reserved Operand Fault on one instruction
        !            46:  *
        !            47:  ***************************************************************************
        !            48: */
        !            49: test_resop_inst()
        !            50: {
        !            51:        valid_test = TRUE;              /* a test is being run */
        !            52:        op_code    =  resop_tbl[ inst_index ].inst_code;
        !            53:        op_name    =  resop_tbl[ inst_index ].name;
        !            54:        precision  =  resop_tbl[ inst_index ].precision;
        !            55:        no_ops     =  resop_tbl[ inst_index ].no_operands;
        !            56:        data_ptr   =  resop_tbl[ inst_index ].evt_data;
        !            57:        max_index  = *resop_tbl[ inst_index ].evt_data_cnt;
        !            58:        if( precision == SGL ) {
        !            59:              sgl_op = TRUE;
        !            60:              acc_ld_size = SGL;        /* use a sgl precision Acc. */
        !            61:        } else {
        !            62:              sgl_op = FALSE;
        !            63:              acc_ld_size = DBL;        /* use a dbl precision Acc. */
        !            64:        } 
        !            65:        if( (prt_hdrs) && (cycle == 1) ) {
        !            66:              if( (!evt_inst) &&                /* print a line feed if   */
        !            67:                  (op_code == SUBD_OP_CODE) )   /*   the 1st line is full */
        !            68:                   writes("\n                       ");
        !            69:              writes( op_name );        /* print the instruction's name */
        !            70:        }
        !            71:        test_inst();
        !            72: }
        !            73: 
        !            74: 
        !            75: 
        !            76: /*
        !            77:  ***************************************************************************
        !            78:  *
        !            79:  *             GET THE INSTRUCTION TABLE INDEX FOR AN OP-CODE
        !            80:  *
        !            81:  *  Given the op_code of an instruction, return the instruction's index in
        !            82:  *  the reserved operand instruction table. Return a negative number if the
        !            83:  *  op-code isn't in the table.
        !            84:  *
        !            85:  *  LOGF won't give reserved operand events with the "no-fpp" WCS firmware
        !            86:  *  so return a negative number if it is the test instruction.
        !            87:  *
        !            88:  **************************************************************************
        !            89: */
        !            90: get_resop_index( op_code )
        !            91: {
        !            92: int x;
        !            93:        x = 0;
        !            94:        while( (resop_tbl[x].inst_code != op_code) && (x < size_resop_tbl) )
        !            95:             x++;
        !            96:        if( x == size_resop_tbl ) 
        !            97:             x = -1;
        !            98:        if( (no_fpp_wcs) && (resop_tbl[inst_index].inst_code == LOGF_OP_CODE) )
        !            99:             x = -1;                    /* don't test LOGF w/ no-fpp WCS */
        !           100:        return( x );
        !           101: }
        !           102: 
        !           103: 

unix.superglobalmegacorp.com

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