|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.