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

1.1     ! root        1: 
        !             2: #include "evt_defs.h"
        !             3: 
        !             4: /*
        !             5:  ********************************************************************
        !             6:  *
        !             7:  *     MONITOR FOR THE FPP UNDERFLOW EVENT TEST
        !             8:  *
        !             9:  *  25-Mar-85  JJM: written
        !            10:  *  29-Mar-85  JJM: mauled the beast for CVDF (cvdf has ovfl but no undfl)
        !            11:  *
        !            12:  ********************************************************************
        !            13: */
        !            14: undfl_test()
        !            15: {
        !            16:        event_msg = "Underflow";
        !            17:        test_event = ARITH_CODE;        /* expect an arithmetic fault */
        !            18:        exp_code = FLT_UNDFL_CODE;      /*  -specificly floating underflow */
        !            19:        if( evt_inst )                  /* was the op-code specified? */
        !            20:        {
        !            21:              inst_index = get_ovfl_index( evt_inst );
        !            22:              if( (inst_index < 0) || 
        !            23:                  (ovfl_tbl[inst_index].undfl_data == null_data) )
        !            24:              {
        !            25:                    if( (prt_hdrs) && (cycle == 1) ) 
        !            26:                    {
        !            27:                         writes(
        !            28:                          "There are no UNDERFLOW faults with op-code ");
        !            29:                         writeh( evt_inst );    /* print the ersatz op-code */
        !            30:                         writec('\n');
        !            31:                         error = TRUE;          /* needed for line feeds */
        !            32:                    }
        !            33:              } else 
        !            34:                    test_undfl_inst();          /* test the instruction */
        !            35:        } else                          /* test all applicable op-codes */
        !            36:              for(inst_index=0; inst_index < size_ovfl_tbl; inst_index++)
        !            37:              {
        !            38:                    data_ptr   =  ovfl_tbl[ inst_index ].undfl_data;
        !            39:                    if( data_ptr != null_data )
        !            40:                          test_undfl_inst();    /* test the instruction */
        !            41:              }
        !            42: }
        !            43:  
        !            44: 
        !            45: 
        !            46: /*
        !            47:  ********************************************************************
        !            48:  *
        !            49:  *     TEST THE UNDERFLOW EVENT ON AN INSTRUCTION 
        !            50:  *
        !            51:  ********************************************************************
        !            52: */
        !            53: test_undfl_inst()
        !            54: {
        !            55:        valid_test = TRUE;              /* a test is being run */
        !            56:        op_code    =  ovfl_tbl[ inst_index ].inst_code;
        !            57:        op_name    =  ovfl_tbl[ inst_index ].name;
        !            58:        no_ops     =  ovfl_tbl[ inst_index ].no_operands;
        !            59:        precision  =  ovfl_tbl[ inst_index ].precision;
        !            60:        data_ptr   =  ovfl_tbl[ inst_index ].undfl_data;
        !            61:        max_index  = *ovfl_tbl[ inst_index ].undfl_cnt;
        !            62:        if( precision == SGL ) {
        !            63:             sgl_op = TRUE;
        !            64:             acc_ld_size = SGL; /* use a sgl precision Acc. */
        !            65:        } else {
        !            66:             sgl_op = FALSE;
        !            67:             acc_ld_size = DBL; /* use a dbl precision Acc. */
        !            68:        }
        !            69:        if( (prt_hdrs) && (cycle == 1) ) 
        !            70:             writes( op_name );
        !            71:        disable_mask = 0;               /* all events enabled   */
        !            72:        evt_disabled = FALSE;
        !            73:        test_inst();                    /* test the instruction */
        !            74:        disable_mask = PSL_EN_UNDFL;    /* disable underflows   */
        !            75:        evt_disabled = TRUE;    
        !            76:        test_inst();                    /* test the instruction */
        !            77: }

unix.superglobalmegacorp.com

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