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

1.1     ! root        1: 
        !             2: #include "evt_defs.h"
        !             3: 
        !             4: /*
        !             5:  ********************************************************************
        !             6:  *
        !             7:  *     MONITOR FOR THE FPP OVERFLOW EVENT TEST
        !             8:  *
        !             9:  *  25-Mar-85  JJM: written
        !            10:  *
        !            11:  ********************************************************************
        !            12: */
        !            13: ovfl_test()
        !            14: {
        !            15:        event_msg = "Overflow";
        !            16:        test_event = ARITH_CODE;        /* expect an arithmetic fault */
        !            17:        exp_code = FLT_OVFL_CODE;       /*  -specificly floating overflow */
        !            18:        disable_mask = 0;               /* don't disable any events   */
        !            19:        evt_disabled = FALSE;
        !            20:        if( evt_inst )                  /* was the op-code specified? */
        !            21:        {
        !            22:              inst_index = get_ovfl_index( evt_inst );
        !            23:              if( inst_index < 0 )      /* valid instruction for OVFL? */
        !            24:              {
        !            25:                   if( (prt_hdrs) && (cycle == 1) )  /* not a valid instr */
        !            26:                   {
        !            27:                        writes(
        !            28:                       "There are no floating OVERFLOW faults with op-code ");
        !            29:                        writeh( evt_inst );
        !            30:                        writec('\n');
        !            31:                        error = TRUE;   /* needed for line feed control */
        !            32:                   }
        !            33:              } else 
        !            34:                   test_ovfl_inst();    /* test the instruction */
        !            35:        } else                          /* the op-code wasn't specfied */
        !            36:              for(inst_index=0; inst_index < size_ovfl_tbl; inst_index++)
        !            37:                   test_ovfl_inst();    /* test each ovfl instruction */
        !            38: }
        !            39: 
        !            40: 
        !            41: /*
        !            42:  ********************************************************************
        !            43:  *
        !            44:  *     test the floating overflow event on an instruction
        !            45:  *
        !            46:  ********************************************************************
        !            47: */
        !            48: test_ovfl_inst()
        !            49: {
        !            50:        valid_test = TRUE;              /* a test is being run */
        !            51:        op_code    =  ovfl_tbl[ inst_index ].inst_code;
        !            52:        op_name    =  ovfl_tbl[ inst_index ].name;
        !            53:        no_ops     =  ovfl_tbl[ inst_index ].no_operands;
        !            54:        precision  =  ovfl_tbl[ inst_index ].precision;
        !            55:        data_ptr   =  ovfl_tbl[ inst_index ].ovfl_data;
        !            56:        max_index  = *ovfl_tbl[ inst_index ].ovfl_cnt;
        !            57:        if( precision == SGL ) {
        !            58:             sgl_op = TRUE;
        !            59:             acc_ld_size = SGL;         /* use a sgl precision Acc. */
        !            60:        } else {
        !            61:             sgl_op = FALSE;
        !            62:             acc_ld_size = DBL;         /* use a dbl precision Acc. */
        !            63:        }
        !            64:        if( (prt_hdrs) && (cycle == 1) ) 
        !            65:             writes( op_name );
        !            66:        test_inst();
        !            67: }
        !            68: 
        !            69: 
        !            70: 
        !            71: 
        !            72: /*
        !            73:  ***************************************************************************
        !            74:  *
        !            75:  *   GET THE OVERFLOW / UNDERFLOW INSTRUCTION TABLE INDEX FOR AN OP-CODE
        !            76:  *
        !            77:  *  Given the op_code of an instruction, return the instruction's index in
        !            78:  *  the overflow / underflow instruction table. Return a negative number 
        !            79:  *  if the op-code isn't in the table.
        !            80:  *
        !            81:  **************************************************************************
        !            82: */
        !            83: get_ovfl_index( op_code )
        !            84: {
        !            85: int x;
        !            86:        x = 0;
        !            87:        while( (ovfl_tbl[x].inst_code != op_code) && (x < size_ovfl_tbl) )
        !            88:             x++;
        !            89:        if( x == size_ovfl_tbl )
        !            90:             x = -1;
        !            91:        return( x );
        !            92: }
        !            93: 
        !            94: 

unix.superglobalmegacorp.com

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