Annotation of cci/d/macro4/evt_defs.h, revision 1.1.1.1

1.1       root        1: 
                      2: #include "../fpp_defs.h";
                      3: 
                      4: 
                      5: /**************************************************************************
                      6: *
                      7: *      FLOATING POINT PROCESSOR EVENTS TEST DEFINITIONS
                      8: *
                      9: *  29-Mar-85  JJM:  mauled "dmp_defs.h" to make this guy
                     10: *   9-Apr-85  JJM:  added the "sgl_dbl_un" union and "post_evt_acc"
                     11: *  12-Apr-85  JJM:  added the push_cnt and exp_push_cnt variables
                     12: *  24-Apr-85  JJM:  added inst_completion test data declarations
                     13: *  25-Apr-85  JJM:  changed post_evt_acc to "u64" and removed sgl_dbl_un
                     14: *   2-May-85  JJM:  added stuff for checking clock events
                     15: *
                     16: **************************************************************************/
                     17: 
                     18: 
                     19: /*
                     20:  * Structure definition used to call the subtests
                     21: */
                     22: struct test_t {
                     23:         int (*test)();                 /* ptr to the test procedure  */
                     24:        char *name;                     /* name of the test procedure */
                     25: };
                     26: extern struct test_t  fpp_test_tbl[];  /* table of "FPP" WCS tests     */
                     27: extern int fpp_test_cnt;               /* number of "FPP" tests        */
                     28: extern int pipe_test_index;            /* index to the pipeline test   */
                     29: 
                     30: extern struct test_t  no_fpp_test_tbl[]; /* table of "NO-FPP" WCS tests */
                     31: extern int no_fpp_test_cnt;            /* number of "NO-FPP" tests     */
                     32: 
                     33: extern struct test_t  pipe_test_tbl[]; /* table of pipeline subtests   */
                     34: extern int no_pipe_tests;              /* number of pipeline subtests  */
                     35: 
                     36: 
                     37: /*
                     38:  *  Structure definition for all non-piped event test data patterns
                     39: */
                     40: struct evt_data_t {
                     41:        struct u64  op_1;
                     42:        struct u64  op_2;
                     43:        };
                     44: 
                     45: /*
                     46:  * Instruction definition for the Reserved Operand Test
                     47: */
                     48: struct evt_inst_t {
                     49:                   int  inst_code;              /* instruction's op code */
                     50:                  char  *name;                  /* instruction's name    */
                     51:                   int  no_operands;            /* # operands used       */
                     52:                   int  precision;              /* sgl / dbl precision   */
                     53:     struct evt_data_t  *evt_data;              /* ptr to data patterns  */
                     54:                  int  *evt_data_cnt;           /* # of data patterns    */
                     55:     };
                     56: 
                     57: extern struct  evt_inst_t   resop_tbl[];       /* inst's for RESOP test */
                     58: extern int size_resop_tbl;                     /* # of RESOP instr's    */
                     59: 
                     60: 
                     61: /*
                     62:  * Instruction definition for the FPP EMULATION TRAP interface test
                     63: */
                     64: struct fpm_inst_t {
                     65:                   int  inst_code;              /* instruction's op code */
                     66:                  char  *name;                  /* instruction's name    */
                     67:                   int  no_operands;            /* # operands used       */
                     68:                   int  precision;              /* sgl / dbl precision   */
                     69:     };
                     70: 
                     71: extern struct  fpm_inst_t   fpm_tbl[];         /* inst's for FPM test   */
                     72: extern int size_fpm_tbl;                       /* # of FPM trap isntr's */
                     73: 
                     74: 
                     75: 
                     76: /*
                     77:  * Instruction definition for the Overflow and Underflow tests
                     78: */
                     79: struct ovfl_inst_t {
                     80:                   int  inst_code;              /* instruction's op code */
                     81:                  char  *name;                  /* instruction's name    */
                     82:                   int  no_operands;            /* # operands used       */
                     83:                   int  precision;              /* sgl / dbl precision   */
                     84:     struct evt_data_t  *ovfl_data;             /* ptr to Overflow data  */
                     85:                  int  *ovfl_cnt;               /* # of OVFL data pat's  */
                     86:     struct evt_data_t  *undfl_data;            /* ptr to Underflow data */
                     87:                  int  *undfl_cnt;              /* # of UNDFL data pat's */
                     88:     };
                     89: 
                     90: extern struct  ovfl_inst_t   ovfl_tbl[];       /* OVFL / UNDFL instr's  */
                     91: extern int size_ovfl_tbl;                      /* # of OVFL/UNDFL insts */
                     92: 
                     93: 
                     94: /** Reserved Operand Data Patterns **/
                     95: extern struct evt_data_t  flt_resops[];                /* vanilla Reserved Operands */
                     96: extern int  flt_resop_cnt;                     /* # of vanilla patterns     */
                     97: extern struct evt_data_t  cmp2_resops[];       /* CMPF2, CMPD2 Reserved ops */
                     98: extern int  cmp2_resop_cnt;                    /* # of CMPx2 data patterns  */
                     99: extern struct evt_data_t  logf_resops[];       /* Reserved data for LOGF    */
                    100: extern int  logf_resop_cnt;                    /* # of LOGF data patterns   */
                    101: 
                    102: /** Overflow Operand Data Patterns **/
                    103: extern struct evt_data_t  adf_ov_dat[];                /* Overflow data for ADDF    */
                    104: extern int  adf_ov_cnt;                                /* # of ADDF ovfl patterns   */
                    105: extern struct evt_data_t  suf_ov_dat[];                /* Overflow data for SUBF    */
                    106: extern int  suf_ov_cnt;                                /* # of SUBF ovfl patterns   */
                    107: extern struct evt_data_t  muf_ov_dat[];                /* Overflow data for MULF    */
                    108: extern int  muf_ov_cnt;                                /* # of MULF ovfl patterns   */
                    109: extern struct evt_data_t  dif_ov_dat[];                /* Overflow data for DIVF    */
                    110: extern int  dif_ov_cnt;                                /* # of DIVF ovfl patterns   */
                    111: extern struct evt_data_t  add_ov_dat[];                /* Overflow data for ADDD    */
                    112: extern int  add_ov_cnt;                                /* # of ADDD ovfl patterns   */
                    113: extern struct evt_data_t  sud_ov_dat[];                /* Overflow data for SUBD    */
                    114: extern int  sud_ov_cnt;                                /* # of SUBD ovfl patterns   */
                    115: extern struct evt_data_t  mud_ov_dat[];                /* Overflow data for MULD    */
                    116: extern int  mud_ov_cnt;                                /* # of MULD ovfl patterns   */
                    117: extern struct evt_data_t  did_ov_dat[];                /* Overflow data for DIVD    */
                    118: extern int  did_ov_cnt;                                /* # of DIVD ovfl patterns   */
                    119: extern struct evt_data_t  cvdf_ov_dat[];       /* Overflow data for CVDF    */
                    120: extern int  cvdf_ov_cnt;                       /* # of CVDF ovfl patterns   */
                    121: extern struct evt_data_t  exf_ov_dat[];                /* Overflow data for EXPF    */
                    122: extern int  exf_ov_cnt;                                /* # of EXPF ovfl patterns   */
                    123: 
                    124: /** Underflow Operand Data Patterns **/
                    125: extern struct evt_data_t  adf_u_dat[];         /* Underflow data for ADDF   */
                    126: extern int  adf_u_cnt;                         /* # of ADDF undfl patterns  */
                    127: extern struct evt_data_t  suf_u_dat[];         /* Underflow data for SUBF   */
                    128: extern int  suf_u_cnt;                         /* # of SUBF undfl patterns  */
                    129: extern struct evt_data_t  muf_u_dat[];         /* Underflow data for MULF   */
                    130: extern int  muf_u_cnt;                         /* # of MULF undfl patterns  */
                    131: extern struct evt_data_t  dif_u_dat[];         /* Underflow data for DIVF   */
                    132: extern int  dif_u_cnt;                         /* # of DIVF undfl patterns  */
                    133: extern struct evt_data_t  add_u_dat[];         /* Underflow data for ADDD   */
                    134: extern int  add_u_cnt;                         /* # of ADDD undfl patterns  */
                    135: extern struct evt_data_t  sud_u_dat[];         /* Underflow data for SUBD   */
                    136: extern int  sud_u_cnt;                         /* # of SUBD undfl patterns  */
                    137: extern struct evt_data_t  mud_u_dat[];         /* Underflow data for MULD   */
                    138: extern int  mud_u_cnt;                         /* # of MULD undfl patterns  */
                    139: extern struct evt_data_t  did_u_dat[];         /* Underflow data for DIVD   */
                    140: extern int  did_u_cnt;                         /* # of DIVD undfl patterns  */
                    141: extern struct evt_data_t  exf_u_dat[];         /* Underflow data for EXPF   */
                    142: extern int  exf_u_cnt;                         /* # of EXPF undfl patterns  */
                    143: 
                    144: /** Integer Overflow Fault Data Patterns **/
                    145: extern struct evt_data_t  mull_ov_dat[];       /* Int Ovfl data for MULL[23]*/
                    146: extern int  mull_ov_cnt;                       /* # of MULL Int Ovfl pat's  */
                    147: extern struct evt_data_t  cvdl_ov_dat[];       /* Int Ovfl data for CVDL    */
                    148: extern int  cvdl_ov_cnt;                       /* # of CVDL Int Ovfl pat's  */
                    149: extern struct evt_data_t  cvfl_ov_dat[];       /* Int Ovfl data for CVFL    */
                    150: extern int  cvfl_ov_cnt;                       /* # of CVFL Int Ovfl pat's  */
                    151: 
                    152: /** More or Less Miscellaneous Data Patterns **/
                    153: extern struct u64        acc_data[];           /* non event causing data    */
                    154: extern struct evt_data_t  null_data[];         /* empty data definition     */
                    155: extern struct evt_data_t  zero_divide_data[];  /* Divide By 0 data patterns */
                    156: extern int  zero_divide_cnt;                   /* # Divide By 0 patterns    */
                    157: extern struct evt_data_t  fpm_data[];          /* FPP Emulation data pat's  */
                    158: extern int  fpm_data_cnt;                      /* # FPP Emulation pat's     */
                    159: 
                    160: /** Data patterns for pipelined instr. completion & queue clearing tests    **/
                    161: extern struct addd_data_t pipe1_data[];                /* = DIVD data patterns      */
                    162: extern int  max_pipe1_index;                   /* # of data patterns (-1)   */
                    163: extern struct addd_data_t pipe2_data[];                /* = MULD data patterns      */
                    164: extern int  max_pipe2_index;                   /* # of data patterns (-1)   */
                    165: extern struct addd_data_t pipe3_data[];                /* = LOGF data patterns      */
                    166: extern int  max_pipe3_index;                   /* # of data patterns (-1)   */
                    167: extern struct addd_data_t pipe4_data[];                /* = MULF data patterns      */
                    168: extern int  max_pipe4_index;                   /* # of data patterns (-1)   */
                    169: extern struct addd_data_t pipe7_data[];                /* = DIVF data patterns      */
                    170: extern int  max_pipe7_index;                   /* # of data patterns (-1)   */
                    171: 
                    172: 
                    173: /*
                    174:  * variables used with the event tests
                    175: */
                    176: extern int  evt_inst;                          /* User specified op-code   */
                    177: extern int  user_mode;                         /* FLAG -run in User Mode   */
                    178: extern int  op_code;                           /* op-code of the inst.     */
                    179: extern char *op_name;                          /* ascii instruction name   */
                    180: extern int  precision;                         /* sgl / dbl instruction    */
                    181: extern int  acc_ld_size;                       /* load sgl of dbl operand  */
                    182: extern int  acc_st_size;                       /* store sgl of dbl operand */
                    183: extern int  no_ops;                            /* # of operands used       */
                    184: extern int  i_cache_hit;                       /* instr. cache hit flag    */
                    185: extern int  max_index;                         /* last data index to use   */
                    186: extern int  op_type;                           /* load / store type instr. */
                    187: extern int  d_to_s;                            /* inst converts dbl to sgl */
                    188: extern int  s_to_d;                            /* inst converts sgl to dbl */
                    189: extern int  sgl_op;                            /* inst has sgl operand(s)  */
                    190: extern int  force_sp;                          /* flag -set the Stack Ptr  */
                    191: extern int  min_shift;                         /* min # bytes to shift code */
                    192: extern int  inst_buf[];                                /* instruction code buffer  */
                    193: extern int  end_of_inst_buf;                   /* end address of code buff */
                    194: extern int  code_addr;                         /* start of test code       */
                    195: extern int  addr_size;                         /* # bytes in addr specifier*/
                    196: extern int  addr_1;                            /* address specifier # 1    */
                    197: extern int  addr_2;                            /* address specifier # 2    */
                    198: extern int  addr_3;                            /* address specifier # 3    */
                    199: extern int  inst_size;                         /* # of bytes in instr.     */
                    200: extern int  shift_count;                       /* # bytes to shift inst_buf*/
                    201: extern int  no_page_faults;                    /* # addr translation faults*/
                    202: extern int  exp_page_faults;                   /* # addr trans faults exp'd*/
                    203: extern int  evt_disabled;                      /* flag -event is disabled  */
                    204: extern short disable_mask;                     /* events to disable in PSW */
                    205: extern int  push_cnt;                          /* # l-wds pushed on stack  */
                    206: extern int  exp_push_cnt;                      /* # l-wds expected on stk  */
                    207: extern int  Codek;                             /* current code cache key   */
                    208: extern int  rtc_occurred;                      /* flag -clock event seen   */
                    209: extern int  clock_retrys;                      /* how long to wait for clk */
                    210: extern int  load_type_inst;                    /* ACC loaded flag          */
                    211: extern int  pipe_test;                         /* flag -pipe test or not   */
                    212: extern int  pipe_inst1;                                /* 1st inst code for pipes  */
                    213: extern int  addr_code_p1;                      /* address code for pipes   */
                    214: extern struct u64 post_evt_acc;                        /* ACC value after an event */
                    215: extern struct evt_data_t *data_ptr;            /* pointer to current data  */
                    216: 
                    217: 
                    218: 
                    219: /*
                    220:  * Demand Paging / Event Test data definitions
                    221: */
                    222: extern int  os_b_op1;                          /* offset to byte operand 1 */
                    223: extern int  os_b_op2;                          /* offset to byte operand 2 */
                    224: extern int  os_b_op3;                          /* offset to byte operand 3 */
                    225: extern int  os_op1;                            /* offset to operand # 1    */
                    226: extern int  os_op2;                            /* offset to operand # 2    */
                    227: extern int  os_op3;                            /* offset to operand # 3    */
                    228: extern int  os_ad_op1;                         /* offset to op. pointer #1 */
                    229: extern int  os_ad_op2;                         /* offset to op. pointer #2 */
                    230: extern int  os_ad_op3;                         /* offset to op. pointer #3 */
                    231: extern struct u64  *adr_b_op1;                 /* ptr. to byte operand 1   */
                    232: extern struct u64  *adr_b_op2;                 /* ptr. to byte operand 2   */
                    233: extern struct u64  *adr_b_op3;                 /* ptr. to byte operand 3   */
                    234: extern struct u64  *adr_op1;                   /* ptr. to operand #1       */
                    235: extern struct u64  *adr_op2;                   /* ptr. to operand #2       */
                    236: extern struct u64  *adr_op3;                   /* ptr. to operand #3       */
                    237: extern int *adr_bop1_lsw;                      /* ptr. to byte op 1's LSW  */
                    238: extern int *adr_bop2_lsw;                      /* ptr. to byte op 2's LSW  */
                    239: extern int *adr_op1_lsw;                       /* ptr. to dbl op #1's LSW  */
                    240: extern int *adr_op2_lsw;                       /* ptr. to dbl op #2's LSW  */
                    241: extern int *adr_op1_ptr;                       /* ptr. to pointer to op #1 */
                    242: extern int *adr_op2_ptr;                       /* ptr. to pointer to op #2 */
                    243: extern int *adr_op3_ptr;                       /* ptr. to pointer to op #3 */
                    244: 
                    245: /*
                    246:  * Event subtests
                    247: */
                    248: extern int fpm_test();                 /* FPP Emulation trap test     */
                    249: extern int resop_test();               /* Reserved Operand Test       */
                    250: extern int ovfl_test();                        /* Overflow Test               */
                    251: extern int undfl_test();               /* Underflow Test              */
                    252: extern int div_by_0_test();            /* Divide by Zero Test         */
                    253: extern int int_ovfl_test();            /* Integer Overflow Test       */
                    254: extern int pipeline_test();            /* Piped Events Test           */
                    255: extern int pipe1();                    /* Piped Events subtest # 1    */
                    256: extern int pipe2();                    /* Piped Events subtest # 2    */
                    257: extern int pipe3();                    /* Piped Events subtest # 3    */
                    258: extern int pipe4();                    /* Piped Events subtest # 4    */
                    259: extern int pipe5();                    /* Piped Events subtest # 5    */
                    260: extern int pipe6();                    /* Piped Events subtest # 6    */
                    261: extern int pipe7();                    /* Piped Events subtest # 7    */
                    262: extern int pipe8();                    /* Piped Events subtest # 8    */
                    263: extern int pipe9();                    /* Piped Events subtest # 9    */
                    264: extern int pipe10();                   /* Piped Events subtest # 10   */
                    265: extern int pipe11();                   /* Piped Events subtest # 11   */
                    266: extern int pipe12();                   /* Piped Events subtest # 12   */
                    267: extern int pipe13();                   /* Piped Events subtest # 13   */
                    268: extern int pipe14();                   /* Piped Events subtest # 14   */
                    269: extern int pipe15();                   /* Piped Events subtest # 15   */
                    270: extern int pipe16();                   /* Piped Events subtest # 16   */
                    271: extern int pipe17();                   /* Piped Events subtest # 17   */
                    272: 
                    273: 
                    274: 
                    275: /*
                    276:  * These definitions must agree with those in "diagnostics/INCLUDE"
                    277: */
                    278: #define        DMP_PG_0   0x36000              /* addresses for code and data */
                    279: #define        DMP_PG_1   DMP_PG_0+0x400
                    280: #define        DMP_PG_2   DMP_PG_1+0x400
                    281: #define        DMP_PG_3   DMP_PG_2+0x400
                    282: #define        DMP_PG_4   DMP_PG_3+0x400
                    283: #define        DMP_PG_5   DMP_PG_4+0x400
                    284: #define DMP_PG_6   DMP_PG_5+0x400
                    285: #define DMP_PG_7   DMP_PG_6+0x400
                    286: 
                    287: #define        DMP_OP_1   DMP_PG_3-4           /* 1st data word      */
                    288: #define        DMP_OP_2   DMP_PG_7-4           /* 2nd data word      */
                    289: 

unix.superglobalmegacorp.com

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