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

#include "fpp_defs.h"


/**************************************************************************
*
*	DEFINITIONS FOR THE FLOATING POINT PROCESSOR DEMAND PAGING TEST 
*
**************************************************************************/


/*
 * Instruction definitions used in Addressing and Demand Paging Tests
*/
struct	instruction_t {
                  int  inst_code;		/* instruction's op code     */
                 char  *name;			/* instruction's name        */
                  int  precision;		/* sgl / dbl precision instr */
                  int  no_operands;		/* # operands used by instr  */
		  int  type;			/* load / store type instr   */
   struct addd_data_t  *data;			/* ptr to current data table */
		  int  *no_patterns;		/* # of data patterns        */
                  int  (*test_routine)();	/* ptr to inst test funcion  */
		  int  emulation_flg;		/* flag -FPM trap if no-fpp  */
    };

/*
 * instruction definition array ( in Common.c )
*/
extern struct  instruction_t   inst_tbl[];


/*
 * data for use in the addressing / demand paging tests
*/
extern struct addd_data_t    ldf_data[];	/*   LDF instr data  */
extern struct addd_data_t    stf_data[];	/*   STF instr data  */
extern struct addd_data_t    lnf_data[];	/*   LNF instr data  */
extern struct addd_data_t   negf_data[];	/*  NEGF instr data  */
extern struct addd_data_t   addf_data[];	/*  ADDF instr data  */
extern struct addd_data_t   cmpf_data[];	/*  CMPF instr data  */
extern struct addd_data_t   cosf_data[];	/*  COSF instr data  */
extern struct addd_data_t   cvfl_data[];	/*  CVFL instr data  */
extern struct addd_data_t   cvlf_data[];	/*  CVLF instr data  */
extern struct addd_data_t   divf_data[];	/*  DIVF instr data  */
extern struct addd_data_t   expf_data[];	/*  EXPF instr data  */
extern struct addd_data_t   logf_data[];	/*  LOGF instr data  */
extern struct addd_data_t   mulf_data[];	/*  MULF instr data  */
extern struct addd_data_t   sinf_data[];	/*  SINF instr data  */
extern struct addd_data_t   subf_data[];	/*  SUBF instr data  */
extern struct addd_data_t   tstf_data[];	/*  TSTF instr data  */
extern struct addd_data_t  atanf_data[];	/* ATANF instr data  */
extern struct addd_data_t  sqrtf_data[];	/* SQRTF instr data  */
extern struct addd_data_t    ldd_data[];	/*   LDD instr data  */
extern struct addd_data_t    std_data[];	/*   STD instr data  */
extern struct addd_data_t    lnd_data[];	/*   LND instr data  */
extern struct addd_data_t   negd_data[];	/*  NEGD instr data  */
extern struct addd_data_t   addd_data[];	/*  ADDD instr data  */
extern struct addd_data_t   cmpd_data[];	/*  CMPD instr data  */
extern struct addd_data_t   cvdf_data[];	/*  CVDF instr data  */
extern struct addd_data_t   cvdl_data[];	/*  CVDL instr data  */
extern struct addd_data_t   cvld_data[];	/*  CVLD instr data  */
extern struct addd_data_t   divd_data[];	/*  DIVD instr data  */
extern struct addd_data_t   ldfd_data[];	/*  LDFD instr data  */
extern struct addd_data_t   muld_data[];	/*  MULD instr data  */
extern struct addd_data_t   subd_data[];	/*  SUBD instr data  */
extern struct addd_data_t   tstd_data[];	/*  TSTD instr data  */
extern struct addd_data_t  pushd_data[];	/* PUSHD instr data  */
extern struct addd_data_t   mull_data[];	/* MULL2,MULL3 data  */


/*
 * # of data patterns per subtest
*/
extern int  ldf_cnt;		/*  # of LDF   data patterns  */
extern int  stf_cnt;		/*  # of STF   data patterns  */
extern int  lnf_cnt;		/*  # of LNF   data patterns  */
extern int  negf_cnt;		/*  # of NEGF  data patterns  */
extern int  addf_cnt;		/*  # of ADDF  data patterns  */
extern int  cmpf_cnt;		/*  # of CMPF  data patterns  */
extern int  cosf_cnt;		/*  # of COSF  data patterns  */
extern int  cvfl_cnt;		/*  # of CVFL  data patterns  */
extern int  cvlf_cnt;		/*  # of CVLF  data patterns  */
extern int  divf_cnt;		/*  # of DIVF  data patterns  */
extern int  expf_cnt;		/*  # of EXPF  data patterns  */
extern int  logf_cnt;		/*  # of LOGF  data patterns  */
extern int  mulf_cnt;		/*  # of MULF  data patterns  */
extern int  sinf_cnt;		/*  # of SINF  data patterns  */
extern int  subf_cnt;		/*  # of SUBF  data patterns  */
extern int  tstf_cnt;		/*  # of TSTF  data patterns  */
extern int  atanf_cnt;		/*  # of TANF  data patterns  */
extern int  sqrtf_cnt;		/*  # of SQRTF data patterns  */
extern int  ldd_cnt;		/*  # of LDD   data patterns  */
extern int  std_cnt;		/*  # of STD   data patterns  */
extern int  lnd_cnt;		/*  # of LND   data patterns  */
extern int  negd_cnt;		/*  # of NEGD  data patterns  */
extern int  addd_cnt;		/*  # of ADDD  data patterns  */
extern int  cmpd_cnt;		/*  # of CMPD  data patterns  */
extern int  cvdf_cnt;		/*  # of CVDF  data patterns  */
extern int  cvdl_cnt;		/*  # of CVDL  data patterns  */
extern int  cvld_cnt;		/*  # of CVLD  data patterns  */
extern int  divd_cnt;		/*  # of DIVD  data patterns  */
extern int  ldfd_cnt;		/*  # of LDFD  data patterns  */
extern int  muld_cnt;		/*  # of MULD  data patterns  */
extern int  subd_cnt;		/*  # of SUBD  data patterns  */
extern int  tstd_cnt;		/*  # of TSTD  data patterns  */
extern int  pushd_cnt;		/*  # of PUSHD data patterns  */
extern int  mull_cnt;		/*  # of MULL2,MULL3 patterns */



/*
 * test routines used in the demand paging tests
*/
extern int chk_dbl_acc();	/* check final dbl. Acc    */
extern int chk_dbl_psl();	/* check PSL flags         */
extern int chk_dbl_s();		/* check stored value      */
extern int chk_sgl_acc();	/* check final sgl. Acc    */
extern int chk_sgl_psl();	/* check PSL flags         */
extern int chk_sgl_s();		/* check stored value      */
extern int chk_math();		/* check Acc for math fn's */



/*
 * variables used with the event / demand paging / emulation tests
*/
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  max_index;				/* last data index to use   */
extern int  op_type;				/* load / store operand     */
extern int  emulated_inst;			/* flag -inst gets FPM trap */
extern int  load_type_inst;			/* flag -inst loads the Acc */
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  trans_acc_error;			/* flag -bad Acc after pg flt */
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 the 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  i_cache_hit;			/* flag -instr. cache hit   */
extern int  pipe_test;				/* flag -testing pipeline   */
extern int  pipe_inst1;				/* 1st instr for pipe test  */
extern int  pipe_inst2;				/* 2nd instr for pipe test  */
extern int  addr_code_p1;			/* pipe inst #1's addr mode */
extern int  addr_code_p2;			/* pipe inst #2's addr mode */
extern struct u64 trans_acc;			/* Acc value after pg fault */
extern struct u64 exp_trans_acc;		/* expected trans_acc value */
extern struct addd_data_t *data_ptr;		/* pointer to current data  */
extern int  (*test_ptr)();			/* ptr to results test func */

/*
 * demand paging 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 struct u64  *adr_op4;			/* ptr. to op. #4 for pipes */
extern struct u64  *adr_op5;			/* ptr. to op. #5 for pipes */
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 */

/*
 * These definitions must agree with those in "diagnostics/INCLUDE"
*/
#define	DMP_PG_0   0x36000
#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_PG_8   DMP_PG_7+0x400
#define DMP_PG_9   DMP_PG_8+0x400
#define DMP_PG_10  DMP_PG_9+0x400
#define DMP_PG_11  DMP_PG_10+0x400
#define DMP_PG_12  DMP_PG_11+0x400
#define DMP_PG_13  DMP_PG_12+0x400

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

unix.superglobalmegacorp.com

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