Annotation of cci/d/fpevent/div_by_0_test.c, revision 1.1.1.1

1.1       root        1: 
                      2: #include "evt_defs.h"
                      3: 
                      4: /*
                      5:  ********************************************************************
                      6:  *
                      7:  *     MONITOR FOR THE FPP DIVIDE BY ZERO EVENT TEST
                      8:  *
                      9:  *  26-Mar-85  JJM: written
                     10:  *
                     11:  ********************************************************************
                     12: */
                     13: div_by_0_test()
                     14: {
                     15:        event_msg = "Divide By ZERO";
                     16:        test_event = ARITH_CODE;        /* expect an arithmetic fault */
                     17:        exp_code = FLT_0_DIV_CODE;      /*  -specificly divide by 0   */
                     18:        disable_mask = 0;               /* don't disable any events   */
                     19:        evt_disabled = FALSE;           /* expected event is enabled  */
                     20:        if( evt_inst )                  /* was the op-code specified? */
                     21:        {
                     22:              if( evt_inst == DIVF_OP_CODE ) 
                     23:                   run_divf();          /* test the DIVF instruction */
                     24:              else if( evt_inst == DIVD_OP_CODE ) 
                     25:                   run_divd();          /* test the DIVD instruction */
                     26:              else if( (prt_hdrs) && (cycle == 1) ) 
                     27:              {
                     28:                   writes("There are no DIVIDE BY ZERO faults with op-code ");
                     29:                   writeh( evt_inst );  /* print the ersatz op-code  */
                     30:                   writec('\n');
                     31:                   error = TRUE;        /* needed for line feed control */
                     32:              }
                     33:        } 
                     34:         else   /* test both DIVF and DIVD */
                     35:        {
                     36:             run_divf();                /* test the DIVF instruction */
                     37:             run_divd();                /* test the DIVD instruction */
                     38:        }
                     39: }
                     40:  
                     41: 
                     42: 
                     43: 
                     44: /*
                     45:  **********************************************************************
                     46:  *
                     47:  *     SET UP TO TEST DIVIDE BY ZERO WITH THE DIVF INSTRUCTION
                     48:  *
                     49:  **********************************************************************
                     50: */
                     51: run_divf()
                     52: {
                     53:        op_code     = DIVF_OP_CODE;     /* set the inst's op_code */
                     54:        op_name     = "DIVF ";          /* set the inst's name */
                     55:        precision   = SGL;
                     56:        acc_ld_size = SGL;              /* load a single precision Acc. */
                     57:        sgl_op      = TRUE;
                     58:        valid_test  = TRUE;             /* we're running a test */
                     59:        data_ptr    = zero_divide_data; /* set the data ptr */
                     60:        max_index   = zero_divide_cnt;  /* set the max index */
                     61:        if( (prt_hdrs) && (cycle == 1) ) 
                     62:             writes( op_name );
                     63:        test_inst();
                     64: }
                     65: 
                     66: 
                     67: 
                     68: /*
                     69:  **********************************************************************
                     70:  *
                     71:  *     SET UP TO TEST DIVIDE BY ZERO WITH THE DIVD INSTRUCTION
                     72:  *
                     73:  **********************************************************************
                     74: */
                     75: run_divd()
                     76: {
                     77:        op_code     = DIVD_OP_CODE;     /* set the inst's op_code */
                     78:        op_name     = "DIVD ";          /* set the inst's name */
                     79:        precision   = DBL;
                     80:        acc_ld_size = DBL;              /* load a double precision Acc. */
                     81:        sgl_op      = FALSE;
                     82:        valid_test  = TRUE;             /* we're running a test */
                     83:        data_ptr    = zero_divide_data; /* set the data ptr */
                     84:        max_index   = zero_divide_cnt;  /* set the max index */
                     85:        if( (prt_hdrs) && (cycle == 1) ) 
                     86:             writes( op_name );
                     87:        test_inst();
                     88: }

unix.superglobalmegacorp.com

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