Annotation of cci/d/macro4/evt_defs.h, revision 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.