|
|
1.1 ! root 1: #include "fpp_defs.h" ! 2: ! 3: ! 4: /************************************************************************** ! 5: * ! 6: * DEFINITIONS FOR THE FLOATING POINT PROCESSOR DEMAND PAGING TEST ! 7: * ! 8: **************************************************************************/ ! 9: ! 10: ! 11: /* ! 12: * Instruction definitions used in Addressing and Demand Paging Tests ! 13: */ ! 14: struct instruction_t { ! 15: int inst_code; /* instruction's op code */ ! 16: char *name; /* instruction's name */ ! 17: int precision; /* sgl / dbl precision instr */ ! 18: int no_operands; /* # operands used by instr */ ! 19: int type; /* load / store type instr */ ! 20: struct addd_data_t *data; /* ptr to current data table */ ! 21: int *no_patterns; /* # of data patterns */ ! 22: int (*test_routine)(); /* ptr to inst test funcion */ ! 23: int emulation_flg; /* flag -FPM trap if no-fpp */ ! 24: }; ! 25: ! 26: /* ! 27: * instruction definition array ( in Common.c ) ! 28: */ ! 29: extern struct instruction_t inst_tbl[]; ! 30: ! 31: ! 32: /* ! 33: * data for use in the addressing / demand paging tests ! 34: */ ! 35: extern struct addd_data_t ldf_data[]; /* LDF instr data */ ! 36: extern struct addd_data_t stf_data[]; /* STF instr data */ ! 37: extern struct addd_data_t lnf_data[]; /* LNF instr data */ ! 38: extern struct addd_data_t negf_data[]; /* NEGF instr data */ ! 39: extern struct addd_data_t addf_data[]; /* ADDF instr data */ ! 40: extern struct addd_data_t cmpf_data[]; /* CMPF instr data */ ! 41: extern struct addd_data_t cosf_data[]; /* COSF instr data */ ! 42: extern struct addd_data_t cvfl_data[]; /* CVFL instr data */ ! 43: extern struct addd_data_t cvlf_data[]; /* CVLF instr data */ ! 44: extern struct addd_data_t divf_data[]; /* DIVF instr data */ ! 45: extern struct addd_data_t expf_data[]; /* EXPF instr data */ ! 46: extern struct addd_data_t logf_data[]; /* LOGF instr data */ ! 47: extern struct addd_data_t mulf_data[]; /* MULF instr data */ ! 48: extern struct addd_data_t sinf_data[]; /* SINF instr data */ ! 49: extern struct addd_data_t subf_data[]; /* SUBF instr data */ ! 50: extern struct addd_data_t tstf_data[]; /* TSTF instr data */ ! 51: extern struct addd_data_t atanf_data[]; /* ATANF instr data */ ! 52: extern struct addd_data_t sqrtf_data[]; /* SQRTF instr data */ ! 53: extern struct addd_data_t ldd_data[]; /* LDD instr data */ ! 54: extern struct addd_data_t std_data[]; /* STD instr data */ ! 55: extern struct addd_data_t lnd_data[]; /* LND instr data */ ! 56: extern struct addd_data_t negd_data[]; /* NEGD instr data */ ! 57: extern struct addd_data_t addd_data[]; /* ADDD instr data */ ! 58: extern struct addd_data_t cmpd_data[]; /* CMPD instr data */ ! 59: extern struct addd_data_t cvdf_data[]; /* CVDF instr data */ ! 60: extern struct addd_data_t cvdl_data[]; /* CVDL instr data */ ! 61: extern struct addd_data_t cvld_data[]; /* CVLD instr data */ ! 62: extern struct addd_data_t divd_data[]; /* DIVD instr data */ ! 63: extern struct addd_data_t ldfd_data[]; /* LDFD instr data */ ! 64: extern struct addd_data_t muld_data[]; /* MULD instr data */ ! 65: extern struct addd_data_t subd_data[]; /* SUBD instr data */ ! 66: extern struct addd_data_t tstd_data[]; /* TSTD instr data */ ! 67: extern struct addd_data_t pushd_data[]; /* PUSHD instr data */ ! 68: extern struct addd_data_t mull_data[]; /* MULL2,MULL3 data */ ! 69: ! 70: ! 71: /* ! 72: * # of data patterns per subtest ! 73: */ ! 74: extern int ldf_cnt; /* # of LDF data patterns */ ! 75: extern int stf_cnt; /* # of STF data patterns */ ! 76: extern int lnf_cnt; /* # of LNF data patterns */ ! 77: extern int negf_cnt; /* # of NEGF data patterns */ ! 78: extern int addf_cnt; /* # of ADDF data patterns */ ! 79: extern int cmpf_cnt; /* # of CMPF data patterns */ ! 80: extern int cosf_cnt; /* # of COSF data patterns */ ! 81: extern int cvfl_cnt; /* # of CVFL data patterns */ ! 82: extern int cvlf_cnt; /* # of CVLF data patterns */ ! 83: extern int divf_cnt; /* # of DIVF data patterns */ ! 84: extern int expf_cnt; /* # of EXPF data patterns */ ! 85: extern int logf_cnt; /* # of LOGF data patterns */ ! 86: extern int mulf_cnt; /* # of MULF data patterns */ ! 87: extern int sinf_cnt; /* # of SINF data patterns */ ! 88: extern int subf_cnt; /* # of SUBF data patterns */ ! 89: extern int tstf_cnt; /* # of TSTF data patterns */ ! 90: extern int atanf_cnt; /* # of TANF data patterns */ ! 91: extern int sqrtf_cnt; /* # of SQRTF data patterns */ ! 92: extern int ldd_cnt; /* # of LDD data patterns */ ! 93: extern int std_cnt; /* # of STD data patterns */ ! 94: extern int lnd_cnt; /* # of LND data patterns */ ! 95: extern int negd_cnt; /* # of NEGD data patterns */ ! 96: extern int addd_cnt; /* # of ADDD data patterns */ ! 97: extern int cmpd_cnt; /* # of CMPD data patterns */ ! 98: extern int cvdf_cnt; /* # of CVDF data patterns */ ! 99: extern int cvdl_cnt; /* # of CVDL data patterns */ ! 100: extern int cvld_cnt; /* # of CVLD data patterns */ ! 101: extern int divd_cnt; /* # of DIVD data patterns */ ! 102: extern int ldfd_cnt; /* # of LDFD data patterns */ ! 103: extern int muld_cnt; /* # of MULD data patterns */ ! 104: extern int subd_cnt; /* # of SUBD data patterns */ ! 105: extern int tstd_cnt; /* # of TSTD data patterns */ ! 106: extern int pushd_cnt; /* # of PUSHD data patterns */ ! 107: extern int mull_cnt; /* # of MULL2,MULL3 patterns */ ! 108: ! 109: ! 110: ! 111: /* ! 112: * test routines used in the demand paging tests ! 113: */ ! 114: extern int chk_dbl_acc(); /* check final dbl. Acc */ ! 115: extern int chk_dbl_psl(); /* check PSL flags */ ! 116: extern int chk_dbl_s(); /* check stored value */ ! 117: extern int chk_sgl_acc(); /* check final sgl. Acc */ ! 118: extern int chk_sgl_psl(); /* check PSL flags */ ! 119: extern int chk_sgl_s(); /* check stored value */ ! 120: extern int chk_math(); /* check Acc for math fn's */ ! 121: ! 122: ! 123: ! 124: /* ! 125: * variables used with the event / demand paging / emulation tests ! 126: */ ! 127: extern int user_mode; /* FLAG -run in User Mode */ ! 128: extern int op_code; /* op-code of the inst. */ ! 129: extern char *op_name; /* ascii instruction name */ ! 130: extern int precision; /* sgl / dbl instruction */ ! 131: extern int acc_ld_size; /* load sgl of dbl operand */ ! 132: extern int acc_st_size; /* store sgl of dbl operand */ ! 133: extern int no_ops; /* # of operands used */ ! 134: extern int max_index; /* last data index to use */ ! 135: extern int op_type; /* load / store operand */ ! 136: extern int emulated_inst; /* flag -inst gets FPM trap */ ! 137: extern int load_type_inst; /* flag -inst loads the Acc */ ! 138: extern int d_to_s; /* inst converts dbl to sgl */ ! 139: extern int s_to_d; /* inst converts sgl to dbl */ ! 140: extern int sgl_op; /* inst has sgl operand(s) */ ! 141: extern int force_sp; /* flag -set the Stack Ptr */ ! 142: extern int min_shift; /* min # bytes to shift code */ ! 143: extern int inst_buf[]; /* instruction code buffer */ ! 144: extern int end_of_inst_buf; /* end address of code buff */ ! 145: extern int trans_acc_error; /* flag -bad Acc after pg flt */ ! 146: extern int code_addr; /* start of test code */ ! 147: extern int addr_size; /* # bytes in addr specifier*/ ! 148: extern int addr_1; /* address specifier # 1 */ ! 149: extern int addr_2; /* address specifier # 2 */ ! 150: extern int addr_3; /* address specifier # 3 */ ! 151: extern int inst_size; /* # of bytes in the instr. */ ! 152: extern int shift_count; /* # bytes to shift inst_buf*/ ! 153: extern int no_page_faults; /* # addr translation faults*/ ! 154: extern int exp_page_faults; /* # addr trans faults exp'd*/ ! 155: extern int i_cache_hit; /* flag -instr. cache hit */ ! 156: extern int pipe_test; /* flag -testing pipeline */ ! 157: extern int pipe_inst1; /* 1st instr for pipe test */ ! 158: extern int pipe_inst2; /* 2nd instr for pipe test */ ! 159: extern int addr_code_p1; /* pipe inst #1's addr mode */ ! 160: extern int addr_code_p2; /* pipe inst #2's addr mode */ ! 161: extern struct u64 trans_acc; /* Acc value after pg fault */ ! 162: extern struct u64 exp_trans_acc; /* expected trans_acc value */ ! 163: extern struct addd_data_t *data_ptr; /* pointer to current data */ ! 164: extern int (*test_ptr)(); /* ptr to results test func */ ! 165: ! 166: /* ! 167: * demand paging data definitions ! 168: */ ! 169: extern int os_b_op1; /* offset to byte operand 1 */ ! 170: extern int os_b_op2; /* offset to byte operand 2 */ ! 171: extern int os_b_op3; /* offset to byte operand 3 */ ! 172: extern int os_op1; /* offset to operand # 1 */ ! 173: extern int os_op2; /* offset to operand # 2 */ ! 174: extern int os_op3; /* offset to operand # 3 */ ! 175: extern int os_ad_op1; /* offset to op. pointer #1 */ ! 176: extern int os_ad_op2; /* offset to op. pointer #2 */ ! 177: extern int os_ad_op3; /* offset to op. pointer #3 */ ! 178: extern struct u64 *adr_b_op1; /* ptr. to byte operand 1 */ ! 179: extern struct u64 *adr_b_op2; /* ptr. to byte operand 2 */ ! 180: extern struct u64 *adr_b_op3; /* ptr. to byte operand 3 */ ! 181: extern struct u64 *adr_op1; /* ptr. to operand #1 */ ! 182: extern struct u64 *adr_op2; /* ptr. to operand #2 */ ! 183: extern struct u64 *adr_op3; /* ptr. to operand #3 */ ! 184: extern struct u64 *adr_op4; /* ptr. to op. #4 for pipes */ ! 185: extern struct u64 *adr_op5; /* ptr. to op. #5 for pipes */ ! 186: extern int *adr_bop1_lsw; /* ptr. to byte op 1's LSW */ ! 187: extern int *adr_bop2_lsw; /* ptr. to byte op 2's LSW */ ! 188: extern int *adr_op1_lsw; /* ptr. to dbl op #1's LSW */ ! 189: extern int *adr_op2_lsw; /* ptr. to dbl op #2's LSW */ ! 190: extern int *adr_op1_ptr; /* ptr. to pointer to op #1 */ ! 191: extern int *adr_op2_ptr; /* ptr. to pointer to op #2 */ ! 192: extern int *adr_op3_ptr; /* ptr. to pointer to op #3 */ ! 193: ! 194: /* ! 195: * These definitions must agree with those in "diagnostics/INCLUDE" ! 196: */ ! 197: #define DMP_PG_0 0x36000 ! 198: #define DMP_PG_1 DMP_PG_0+0x400 ! 199: #define DMP_PG_2 DMP_PG_1+0x400 ! 200: #define DMP_PG_3 DMP_PG_2+0x400 ! 201: #define DMP_PG_4 DMP_PG_3+0x400 ! 202: #define DMP_PG_5 DMP_PG_4+0x400 ! 203: #define DMP_PG_6 DMP_PG_5+0x400 ! 204: #define DMP_PG_7 DMP_PG_6+0x400 ! 205: #define DMP_PG_8 DMP_PG_7+0x400 ! 206: #define DMP_PG_9 DMP_PG_8+0x400 ! 207: #define DMP_PG_10 DMP_PG_9+0x400 ! 208: #define DMP_PG_11 DMP_PG_10+0x400 ! 209: #define DMP_PG_12 DMP_PG_11+0x400 ! 210: #define DMP_PG_13 DMP_PG_12+0x400 ! 211: ! 212: #define DMP_OP_1 DMP_PG_3-4 /* 1st data word */ ! 213: #define DMP_OP_2 DMP_PG_7-4 /* 2nd data word */ ! 214: #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.