|
|
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.