File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / macro4 / evt_defs.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:30:56 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v121, HEAD
Power 6/32 Unix version 1.21


#include "../fpp_defs.h";


/**************************************************************************
*
*	FLOATING POINT PROCESSOR EVENTS TEST DEFINITIONS
*
*  29-Mar-85  JJM:  mauled "dmp_defs.h" to make this guy
*   9-Apr-85  JJM:  added the "sgl_dbl_un" union and "post_evt_acc"
*  12-Apr-85  JJM:  added the push_cnt and exp_push_cnt variables
*  24-Apr-85  JJM:  added inst_completion test data declarations
*  25-Apr-85  JJM:  changed post_evt_acc to "u64" and removed sgl_dbl_un
*   2-May-85  JJM:  added stuff for checking clock events
*
**************************************************************************/


/*
 * Structure definition used to call the subtests
*/
struct test_t {
	 int (*test)();			/* ptr to the test procedure  */
	char *name;			/* name of the test procedure */
};
extern struct test_t  fpp_test_tbl[];	/* table of "FPP" WCS tests     */
extern int fpp_test_cnt;		/* number of "FPP" tests        */
extern int pipe_test_index;		/* index to the pipeline test   */

extern struct test_t  no_fpp_test_tbl[]; /* table of "NO-FPP" WCS tests */
extern int no_fpp_test_cnt;		/* number of "NO-FPP" tests     */

extern struct test_t  pipe_test_tbl[];	/* table of pipeline subtests   */
extern int no_pipe_tests;		/* number of pipeline subtests  */


/*
 *  Structure definition for all non-piped event test data patterns
*/
struct evt_data_t {
	struct u64  op_1;
	struct u64  op_2;
       };

/*
 * Instruction definition for the Reserved Operand Test
*/
struct	evt_inst_t {
                  int  inst_code;		/* instruction's op code */
                 char  *name;			/* instruction's name    */
                  int  no_operands;		/* # operands used       */
                  int  precision;		/* sgl / dbl precision   */
    struct evt_data_t  *evt_data;		/* ptr to data patterns  */
		  int  *evt_data_cnt;		/* # of data patterns    */
    };

extern struct  evt_inst_t   resop_tbl[];	/* inst's for RESOP test */
extern int size_resop_tbl;			/* # of RESOP instr's    */


/*
 * Instruction definition for the FPP EMULATION TRAP interface test
*/
struct	fpm_inst_t {
                  int  inst_code;		/* instruction's op code */
                 char  *name;			/* instruction's name    */
                  int  no_operands;		/* # operands used       */
                  int  precision;		/* sgl / dbl precision   */
    };

extern struct  fpm_inst_t   fpm_tbl[];		/* inst's for FPM test   */
extern int size_fpm_tbl;			/* # of FPM trap isntr's */



/*
 * Instruction definition for the Overflow and Underflow tests
*/
struct	ovfl_inst_t {
                  int  inst_code;		/* instruction's op code */
                 char  *name;			/* instruction's name    */
                  int  no_operands;		/* # operands used       */
                  int  precision;		/* sgl / dbl precision   */
    struct evt_data_t  *ovfl_data;		/* ptr to Overflow data  */
		  int  *ovfl_cnt;		/* # of OVFL data pat's  */
    struct evt_data_t  *undfl_data;		/* ptr to Underflow data */
		  int  *undfl_cnt;		/* # of UNDFL data pat's */
    };

extern struct  ovfl_inst_t   ovfl_tbl[];	/* OVFL / UNDFL instr's  */
extern int size_ovfl_tbl;			/* # of OVFL/UNDFL insts */


/** Reserved Operand Data Patterns **/
extern struct evt_data_t  flt_resops[];		/* vanilla Reserved Operands */
extern int  flt_resop_cnt;			/* # of vanilla patterns     */
extern struct evt_data_t  cmp2_resops[];	/* CMPF2, CMPD2 Reserved ops */
extern int  cmp2_resop_cnt;			/* # of CMPx2 data patterns  */
extern struct evt_data_t  logf_resops[];	/* Reserved data for LOGF    */
extern int  logf_resop_cnt;			/* # of LOGF data patterns   */

/** Overflow Operand Data Patterns **/
extern struct evt_data_t  adf_ov_dat[];		/* Overflow data for ADDF    */
extern int  adf_ov_cnt;				/* # of ADDF ovfl patterns   */
extern struct evt_data_t  suf_ov_dat[];		/* Overflow data for SUBF    */
extern int  suf_ov_cnt;				/* # of SUBF ovfl patterns   */
extern struct evt_data_t  muf_ov_dat[];		/* Overflow data for MULF    */
extern int  muf_ov_cnt;				/* # of MULF ovfl patterns   */
extern struct evt_data_t  dif_ov_dat[];		/* Overflow data for DIVF    */
extern int  dif_ov_cnt;				/* # of DIVF ovfl patterns   */
extern struct evt_data_t  add_ov_dat[];		/* Overflow data for ADDD    */
extern int  add_ov_cnt;				/* # of ADDD ovfl patterns   */
extern struct evt_data_t  sud_ov_dat[];		/* Overflow data for SUBD    */
extern int  sud_ov_cnt;				/* # of SUBD ovfl patterns   */
extern struct evt_data_t  mud_ov_dat[];		/* Overflow data for MULD    */
extern int  mud_ov_cnt;				/* # of MULD ovfl patterns   */
extern struct evt_data_t  did_ov_dat[];		/* Overflow data for DIVD    */
extern int  did_ov_cnt;				/* # of DIVD ovfl patterns   */
extern struct evt_data_t  cvdf_ov_dat[];	/* Overflow data for CVDF    */
extern int  cvdf_ov_cnt;			/* # of CVDF ovfl patterns   */
extern struct evt_data_t  exf_ov_dat[];		/* Overflow data for EXPF    */
extern int  exf_ov_cnt;				/* # of EXPF ovfl patterns   */

/** Underflow Operand Data Patterns **/
extern struct evt_data_t  adf_u_dat[];		/* Underflow data for ADDF   */
extern int  adf_u_cnt;				/* # of ADDF undfl patterns  */
extern struct evt_data_t  suf_u_dat[];		/* Underflow data for SUBF   */
extern int  suf_u_cnt;				/* # of SUBF undfl patterns  */
extern struct evt_data_t  muf_u_dat[];		/* Underflow data for MULF   */
extern int  muf_u_cnt;				/* # of MULF undfl patterns  */
extern struct evt_data_t  dif_u_dat[];		/* Underflow data for DIVF   */
extern int  dif_u_cnt;				/* # of DIVF undfl patterns  */
extern struct evt_data_t  add_u_dat[];		/* Underflow data for ADDD   */
extern int  add_u_cnt;				/* # of ADDD undfl patterns  */
extern struct evt_data_t  sud_u_dat[];		/* Underflow data for SUBD   */
extern int  sud_u_cnt;				/* # of SUBD undfl patterns  */
extern struct evt_data_t  mud_u_dat[];		/* Underflow data for MULD   */
extern int  mud_u_cnt;				/* # of MULD undfl patterns  */
extern struct evt_data_t  did_u_dat[];		/* Underflow data for DIVD   */
extern int  did_u_cnt;				/* # of DIVD undfl patterns  */
extern struct evt_data_t  exf_u_dat[];		/* Underflow data for EXPF   */
extern int  exf_u_cnt;				/* # of EXPF undfl patterns  */

/** Integer Overflow Fault Data Patterns **/
extern struct evt_data_t  mull_ov_dat[];	/* Int Ovfl data for MULL[23]*/
extern int  mull_ov_cnt;			/* # of MULL Int Ovfl pat's  */
extern struct evt_data_t  cvdl_ov_dat[];	/* Int Ovfl data for CVDL    */
extern int  cvdl_ov_cnt;			/* # of CVDL Int Ovfl pat's  */
extern struct evt_data_t  cvfl_ov_dat[];	/* Int Ovfl data for CVFL    */
extern int  cvfl_ov_cnt;			/* # of CVFL Int Ovfl pat's  */

/** More or Less Miscellaneous Data Patterns **/
extern struct u64 	  acc_data[];		/* non event causing data    */
extern struct evt_data_t  null_data[];		/* empty data definition     */
extern struct evt_data_t  zero_divide_data[];	/* Divide By 0 data patterns */
extern int  zero_divide_cnt;			/* # Divide By 0 patterns    */
extern struct evt_data_t  fpm_data[];		/* FPP Emulation data pat's  */
extern int  fpm_data_cnt;			/* # FPP Emulation pat's     */

/** Data patterns for pipelined instr. completion & queue clearing tests    **/
extern struct addd_data_t pipe1_data[];		/* = DIVD data patterns      */
extern int  max_pipe1_index;			/* # of data patterns (-1)   */
extern struct addd_data_t pipe2_data[];		/* = MULD data patterns      */
extern int  max_pipe2_index;			/* # of data patterns (-1)   */
extern struct addd_data_t pipe3_data[];		/* = LOGF data patterns      */
extern int  max_pipe3_index;			/* # of data patterns (-1)   */
extern struct addd_data_t pipe4_data[];		/* = MULF data patterns      */
extern int  max_pipe4_index;			/* # of data patterns (-1)   */
extern struct addd_data_t pipe7_data[];		/* = DIVF data patterns      */
extern int  max_pipe7_index;			/* # of data patterns (-1)   */


/*
 * variables used with the event tests
*/
extern int  evt_inst;				/* User specified op-code   */
extern int  user_mode;				/* FLAG -run in User Mode   */
extern int  op_code;				/* op-code of the inst.     */
extern char *op_name;				/* ascii instruction name   */
extern int  precision;				/* sgl / dbl instruction    */
extern int  acc_ld_size;			/* load sgl of dbl operand  */
extern int  acc_st_size;			/* store sgl of dbl operand */
extern int  no_ops;				/* # of operands used       */
extern int  i_cache_hit;			/* instr. cache hit flag    */
extern int  max_index;				/* last data index to use   */
extern int  op_type;				/* load / store type instr. */
extern int  d_to_s;				/* inst converts dbl to sgl */
extern int  s_to_d;				/* inst converts sgl to dbl */
extern int  sgl_op;				/* inst has sgl operand(s)  */
extern int  force_sp;				/* flag -set the Stack Ptr  */
extern int  min_shift;			        /* min # bytes to shift code */
extern int  inst_buf[];			        /* instruction code buffer  */
extern int  end_of_inst_buf;		        /* end address of code buff */
extern int  code_addr;				/* start of test code       */
extern int  addr_size;				/* # bytes in addr specifier*/
extern int  addr_1;				/* address specifier # 1    */
extern int  addr_2;				/* address specifier # 2    */
extern int  addr_3;				/* address specifier # 3    */
extern int  inst_size;				/* # of bytes in instr.     */
extern int  shift_count;			/* # bytes to shift inst_buf*/
extern int  no_page_faults;			/* # addr translation faults*/
extern int  exp_page_faults;			/* # addr trans faults exp'd*/
extern int  evt_disabled;			/* flag -event is disabled  */
extern short disable_mask;			/* events to disable in PSW */
extern int  push_cnt;				/* # l-wds pushed on stack  */
extern int  exp_push_cnt;			/* # l-wds expected on stk  */
extern int  Codek;				/* current code cache key   */
extern int  rtc_occurred;			/* flag -clock event seen   */
extern int  clock_retrys;			/* how long to wait for clk */
extern int  load_type_inst;			/* ACC loaded flag          */
extern int  pipe_test;				/* flag -pipe test or not   */
extern int  pipe_inst1;				/* 1st inst code for pipes  */
extern int  addr_code_p1;			/* address code for pipes   */
extern struct u64 post_evt_acc;			/* ACC value after an event */
extern struct evt_data_t *data_ptr;		/* pointer to current data  */



/*
 * Demand Paging / Event Test data definitions
*/
extern int  os_b_op1;				/* offset to byte operand 1 */
extern int  os_b_op2;				/* offset to byte operand 2 */
extern int  os_b_op3;				/* offset to byte operand 3 */
extern int  os_op1;				/* offset to operand # 1    */
extern int  os_op2;				/* offset to operand # 2    */
extern int  os_op3;				/* offset to operand # 3    */
extern int  os_ad_op1;				/* offset to op. pointer #1 */
extern int  os_ad_op2;				/* offset to op. pointer #2 */
extern int  os_ad_op3;				/* offset to op. pointer #3 */
extern struct u64  *adr_b_op1;			/* ptr. to byte operand 1   */
extern struct u64  *adr_b_op2;			/* ptr. to byte operand 2   */
extern struct u64  *adr_b_op3;			/* ptr. to byte operand 3   */
extern struct u64  *adr_op1;			/* ptr. to operand #1       */
extern struct u64  *adr_op2;			/* ptr. to operand #2       */
extern struct u64  *adr_op3;			/* ptr. to operand #3       */
extern int *adr_bop1_lsw;			/* ptr. to byte op 1's LSW  */
extern int *adr_bop2_lsw;			/* ptr. to byte op 2's LSW  */
extern int *adr_op1_lsw;			/* ptr. to dbl op #1's LSW  */
extern int *adr_op2_lsw;			/* ptr. to dbl op #2's LSW  */
extern int *adr_op1_ptr;			/* ptr. to pointer to op #1 */
extern int *adr_op2_ptr;			/* ptr. to pointer to op #2 */
extern int *adr_op3_ptr;			/* ptr. to pointer to op #3 */

/*
 * Event subtests
*/
extern int fpm_test();			/* FPP Emulation trap test     */
extern int resop_test();		/* Reserved Operand Test       */
extern int ovfl_test();			/* Overflow Test               */
extern int undfl_test();		/* Underflow Test              */
extern int div_by_0_test();		/* Divide by Zero Test         */
extern int int_ovfl_test();		/* Integer Overflow Test       */
extern int pipeline_test();		/* Piped Events Test           */
extern int pipe1();			/* Piped Events subtest # 1    */
extern int pipe2();			/* Piped Events subtest # 2    */
extern int pipe3();			/* Piped Events subtest # 3    */
extern int pipe4();			/* Piped Events subtest # 4    */
extern int pipe5();			/* Piped Events subtest # 5    */
extern int pipe6();			/* Piped Events subtest # 6    */
extern int pipe7();			/* Piped Events subtest # 7    */
extern int pipe8();			/* Piped Events subtest # 8    */
extern int pipe9();			/* Piped Events subtest # 9    */
extern int pipe10();			/* Piped Events subtest # 10   */
extern int pipe11();			/* Piped Events subtest # 11   */
extern int pipe12();			/* Piped Events subtest # 12   */
extern int pipe13();			/* Piped Events subtest # 13   */
extern int pipe14();			/* Piped Events subtest # 14   */
extern int pipe15();			/* Piped Events subtest # 15   */
extern int pipe16();			/* Piped Events subtest # 16   */
extern int pipe17();			/* Piped Events subtest # 17   */



/*
 * These definitions must agree with those in "diagnostics/INCLUDE"
*/
#define	DMP_PG_0   0x36000		/* addresses for code and data */
#define	DMP_PG_1   DMP_PG_0+0x400
#define	DMP_PG_2   DMP_PG_1+0x400
#define	DMP_PG_3   DMP_PG_2+0x400
#define	DMP_PG_4   DMP_PG_3+0x400
#define	DMP_PG_5   DMP_PG_4+0x400
#define DMP_PG_6   DMP_PG_5+0x400
#define DMP_PG_7   DMP_PG_6+0x400

#define	DMP_OP_1   DMP_PG_3-4		/* 1st data word      */
#define	DMP_OP_2   DMP_PG_7-4		/* 2nd data word      */


unix.superglobalmegacorp.com

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