|
|
1.1 root 1:
2: #include "../fpp_defs.h";
3:
4:
5: /**************************************************************************
6: *
7: * FLOATING POINT PROCESSOR EVENTS TEST DEFINITIONS
8: *
9: * 29-Mar-85 JJM: mauled "dmp_defs.h" to make this guy
10: * 9-Apr-85 JJM: added the "sgl_dbl_un" union and "post_evt_acc"
11: * 12-Apr-85 JJM: added the push_cnt and exp_push_cnt variables
12: * 24-Apr-85 JJM: added inst_completion test data declarations
13: * 25-Apr-85 JJM: changed post_evt_acc to "u64" and removed sgl_dbl_un
14: * 2-May-85 JJM: added stuff for checking clock events
15: *
16: **************************************************************************/
17:
18:
19: /*
20: * Structure definition used to call the subtests
21: */
22: struct test_t {
23: int (*test)(); /* ptr to the test procedure */
24: char *name; /* name of the test procedure */
25: };
26: extern struct test_t fpp_test_tbl[]; /* table of "FPP" WCS tests */
27: extern int fpp_test_cnt; /* number of "FPP" tests */
28: extern int pipe_test_index; /* index to the pipeline test */
29:
30: extern struct test_t no_fpp_test_tbl[]; /* table of "NO-FPP" WCS tests */
31: extern int no_fpp_test_cnt; /* number of "NO-FPP" tests */
32:
33: extern struct test_t pipe_test_tbl[]; /* table of pipeline subtests */
34: extern int no_pipe_tests; /* number of pipeline subtests */
35:
36:
37: /*
38: * Structure definition for all non-piped event test data patterns
39: */
40: struct evt_data_t {
41: struct u64 op_1;
42: struct u64 op_2;
43: };
44:
45: /*
46: * Instruction definition for the Reserved Operand Test
47: */
48: struct evt_inst_t {
49: int inst_code; /* instruction's op code */
50: char *name; /* instruction's name */
51: int no_operands; /* # operands used */
52: int precision; /* sgl / dbl precision */
53: struct evt_data_t *evt_data; /* ptr to data patterns */
54: int *evt_data_cnt; /* # of data patterns */
55: };
56:
57: extern struct evt_inst_t resop_tbl[]; /* inst's for RESOP test */
58: extern int size_resop_tbl; /* # of RESOP instr's */
59:
60:
61: /*
62: * Instruction definition for the FPP EMULATION TRAP interface test
63: */
64: struct fpm_inst_t {
65: int inst_code; /* instruction's op code */
66: char *name; /* instruction's name */
67: int no_operands; /* # operands used */
68: int precision; /* sgl / dbl precision */
69: };
70:
71: extern struct fpm_inst_t fpm_tbl[]; /* inst's for FPM test */
72: extern int size_fpm_tbl; /* # of FPM trap isntr's */
73:
74:
75:
76: /*
77: * Instruction definition for the Overflow and Underflow tests
78: */
79: struct ovfl_inst_t {
80: int inst_code; /* instruction's op code */
81: char *name; /* instruction's name */
82: int no_operands; /* # operands used */
83: int precision; /* sgl / dbl precision */
84: struct evt_data_t *ovfl_data; /* ptr to Overflow data */
85: int *ovfl_cnt; /* # of OVFL data pat's */
86: struct evt_data_t *undfl_data; /* ptr to Underflow data */
87: int *undfl_cnt; /* # of UNDFL data pat's */
88: };
89:
90: extern struct ovfl_inst_t ovfl_tbl[]; /* OVFL / UNDFL instr's */
91: extern int size_ovfl_tbl; /* # of OVFL/UNDFL insts */
92:
93:
94: /** Reserved Operand Data Patterns **/
95: extern struct evt_data_t flt_resops[]; /* vanilla Reserved Operands */
96: extern int flt_resop_cnt; /* # of vanilla patterns */
97: extern struct evt_data_t cmp2_resops[]; /* CMPF2, CMPD2 Reserved ops */
98: extern int cmp2_resop_cnt; /* # of CMPx2 data patterns */
99: extern struct evt_data_t logf_resops[]; /* Reserved data for LOGF */
100: extern int logf_resop_cnt; /* # of LOGF data patterns */
101:
102: /** Overflow Operand Data Patterns **/
103: extern struct evt_data_t adf_ov_dat[]; /* Overflow data for ADDF */
104: extern int adf_ov_cnt; /* # of ADDF ovfl patterns */
105: extern struct evt_data_t suf_ov_dat[]; /* Overflow data for SUBF */
106: extern int suf_ov_cnt; /* # of SUBF ovfl patterns */
107: extern struct evt_data_t muf_ov_dat[]; /* Overflow data for MULF */
108: extern int muf_ov_cnt; /* # of MULF ovfl patterns */
109: extern struct evt_data_t dif_ov_dat[]; /* Overflow data for DIVF */
110: extern int dif_ov_cnt; /* # of DIVF ovfl patterns */
111: extern struct evt_data_t add_ov_dat[]; /* Overflow data for ADDD */
112: extern int add_ov_cnt; /* # of ADDD ovfl patterns */
113: extern struct evt_data_t sud_ov_dat[]; /* Overflow data for SUBD */
114: extern int sud_ov_cnt; /* # of SUBD ovfl patterns */
115: extern struct evt_data_t mud_ov_dat[]; /* Overflow data for MULD */
116: extern int mud_ov_cnt; /* # of MULD ovfl patterns */
117: extern struct evt_data_t did_ov_dat[]; /* Overflow data for DIVD */
118: extern int did_ov_cnt; /* # of DIVD ovfl patterns */
119: extern struct evt_data_t cvdf_ov_dat[]; /* Overflow data for CVDF */
120: extern int cvdf_ov_cnt; /* # of CVDF ovfl patterns */
121: extern struct evt_data_t exf_ov_dat[]; /* Overflow data for EXPF */
122: extern int exf_ov_cnt; /* # of EXPF ovfl patterns */
123:
124: /** Underflow Operand Data Patterns **/
125: extern struct evt_data_t adf_u_dat[]; /* Underflow data for ADDF */
126: extern int adf_u_cnt; /* # of ADDF undfl patterns */
127: extern struct evt_data_t suf_u_dat[]; /* Underflow data for SUBF */
128: extern int suf_u_cnt; /* # of SUBF undfl patterns */
129: extern struct evt_data_t muf_u_dat[]; /* Underflow data for MULF */
130: extern int muf_u_cnt; /* # of MULF undfl patterns */
131: extern struct evt_data_t dif_u_dat[]; /* Underflow data for DIVF */
132: extern int dif_u_cnt; /* # of DIVF undfl patterns */
133: extern struct evt_data_t add_u_dat[]; /* Underflow data for ADDD */
134: extern int add_u_cnt; /* # of ADDD undfl patterns */
135: extern struct evt_data_t sud_u_dat[]; /* Underflow data for SUBD */
136: extern int sud_u_cnt; /* # of SUBD undfl patterns */
137: extern struct evt_data_t mud_u_dat[]; /* Underflow data for MULD */
138: extern int mud_u_cnt; /* # of MULD undfl patterns */
139: extern struct evt_data_t did_u_dat[]; /* Underflow data for DIVD */
140: extern int did_u_cnt; /* # of DIVD undfl patterns */
141: extern struct evt_data_t exf_u_dat[]; /* Underflow data for EXPF */
142: extern int exf_u_cnt; /* # of EXPF undfl patterns */
143:
144: /** Integer Overflow Fault Data Patterns **/
145: extern struct evt_data_t mull_ov_dat[]; /* Int Ovfl data for MULL[23]*/
146: extern int mull_ov_cnt; /* # of MULL Int Ovfl pat's */
147: extern struct evt_data_t cvdl_ov_dat[]; /* Int Ovfl data for CVDL */
148: extern int cvdl_ov_cnt; /* # of CVDL Int Ovfl pat's */
149: extern struct evt_data_t cvfl_ov_dat[]; /* Int Ovfl data for CVFL */
150: extern int cvfl_ov_cnt; /* # of CVFL Int Ovfl pat's */
151:
152: /** More or Less Miscellaneous Data Patterns **/
153: extern struct u64 acc_data[]; /* non event causing data */
154: extern struct evt_data_t null_data[]; /* empty data definition */
155: extern struct evt_data_t zero_divide_data[]; /* Divide By 0 data patterns */
156: extern int zero_divide_cnt; /* # Divide By 0 patterns */
157: extern struct evt_data_t fpm_data[]; /* FPP Emulation data pat's */
158: extern int fpm_data_cnt; /* # FPP Emulation pat's */
159:
160: /** Data patterns for pipelined instr. completion & queue clearing tests **/
161: extern struct addd_data_t pipe1_data[]; /* = DIVD data patterns */
162: extern int max_pipe1_index; /* # of data patterns (-1) */
163: extern struct addd_data_t pipe2_data[]; /* = MULD data patterns */
164: extern int max_pipe2_index; /* # of data patterns (-1) */
165: extern struct addd_data_t pipe3_data[]; /* = LOGF data patterns */
166: extern int max_pipe3_index; /* # of data patterns (-1) */
167: extern struct addd_data_t pipe4_data[]; /* = MULF data patterns */
168: extern int max_pipe4_index; /* # of data patterns (-1) */
169: extern struct addd_data_t pipe7_data[]; /* = DIVF data patterns */
170: extern int max_pipe7_index; /* # of data patterns (-1) */
171:
172:
173: /*
174: * variables used with the event tests
175: */
176: extern int evt_inst; /* User specified op-code */
177: extern int user_mode; /* FLAG -run in User Mode */
178: extern int op_code; /* op-code of the inst. */
179: extern char *op_name; /* ascii instruction name */
180: extern int precision; /* sgl / dbl instruction */
181: extern int acc_ld_size; /* load sgl of dbl operand */
182: extern int acc_st_size; /* store sgl of dbl operand */
183: extern int no_ops; /* # of operands used */
184: extern int i_cache_hit; /* instr. cache hit flag */
185: extern int max_index; /* last data index to use */
186: extern int op_type; /* load / store type instr. */
187: extern int d_to_s; /* inst converts dbl to sgl */
188: extern int s_to_d; /* inst converts sgl to dbl */
189: extern int sgl_op; /* inst has sgl operand(s) */
190: extern int force_sp; /* flag -set the Stack Ptr */
191: extern int min_shift; /* min # bytes to shift code */
192: extern int inst_buf[]; /* instruction code buffer */
193: extern int end_of_inst_buf; /* end address of code buff */
194: extern int code_addr; /* start of test code */
195: extern int addr_size; /* # bytes in addr specifier*/
196: extern int addr_1; /* address specifier # 1 */
197: extern int addr_2; /* address specifier # 2 */
198: extern int addr_3; /* address specifier # 3 */
199: extern int inst_size; /* # of bytes in instr. */
200: extern int shift_count; /* # bytes to shift inst_buf*/
201: extern int no_page_faults; /* # addr translation faults*/
202: extern int exp_page_faults; /* # addr trans faults exp'd*/
203: extern int evt_disabled; /* flag -event is disabled */
204: extern short disable_mask; /* events to disable in PSW */
205: extern int push_cnt; /* # l-wds pushed on stack */
206: extern int exp_push_cnt; /* # l-wds expected on stk */
207: extern int Codek; /* current code cache key */
208: extern int rtc_occurred; /* flag -clock event seen */
209: extern int clock_retrys; /* how long to wait for clk */
210: extern int load_type_inst; /* ACC loaded flag */
211: extern int pipe_test; /* flag -pipe test or not */
212: extern int pipe_inst1; /* 1st inst code for pipes */
213: extern int addr_code_p1; /* address code for pipes */
214: extern struct u64 post_evt_acc; /* ACC value after an event */
215: extern struct evt_data_t *data_ptr; /* pointer to current data */
216:
217:
218:
219: /*
220: * Demand Paging / Event Test data definitions
221: */
222: extern int os_b_op1; /* offset to byte operand 1 */
223: extern int os_b_op2; /* offset to byte operand 2 */
224: extern int os_b_op3; /* offset to byte operand 3 */
225: extern int os_op1; /* offset to operand # 1 */
226: extern int os_op2; /* offset to operand # 2 */
227: extern int os_op3; /* offset to operand # 3 */
228: extern int os_ad_op1; /* offset to op. pointer #1 */
229: extern int os_ad_op2; /* offset to op. pointer #2 */
230: extern int os_ad_op3; /* offset to op. pointer #3 */
231: extern struct u64 *adr_b_op1; /* ptr. to byte operand 1 */
232: extern struct u64 *adr_b_op2; /* ptr. to byte operand 2 */
233: extern struct u64 *adr_b_op3; /* ptr. to byte operand 3 */
234: extern struct u64 *adr_op1; /* ptr. to operand #1 */
235: extern struct u64 *adr_op2; /* ptr. to operand #2 */
236: extern struct u64 *adr_op3; /* ptr. to operand #3 */
237: extern int *adr_bop1_lsw; /* ptr. to byte op 1's LSW */
238: extern int *adr_bop2_lsw; /* ptr. to byte op 2's LSW */
239: extern int *adr_op1_lsw; /* ptr. to dbl op #1's LSW */
240: extern int *adr_op2_lsw; /* ptr. to dbl op #2's LSW */
241: extern int *adr_op1_ptr; /* ptr. to pointer to op #1 */
242: extern int *adr_op2_ptr; /* ptr. to pointer to op #2 */
243: extern int *adr_op3_ptr; /* ptr. to pointer to op #3 */
244:
245: /*
246: * Event subtests
247: */
248: extern int fpm_test(); /* FPP Emulation trap test */
249: extern int resop_test(); /* Reserved Operand Test */
250: extern int ovfl_test(); /* Overflow Test */
251: extern int undfl_test(); /* Underflow Test */
252: extern int div_by_0_test(); /* Divide by Zero Test */
253: extern int int_ovfl_test(); /* Integer Overflow Test */
254: extern int pipeline_test(); /* Piped Events Test */
255: extern int pipe1(); /* Piped Events subtest # 1 */
256: extern int pipe2(); /* Piped Events subtest # 2 */
257: extern int pipe3(); /* Piped Events subtest # 3 */
258: extern int pipe4(); /* Piped Events subtest # 4 */
259: extern int pipe5(); /* Piped Events subtest # 5 */
260: extern int pipe6(); /* Piped Events subtest # 6 */
261: extern int pipe7(); /* Piped Events subtest # 7 */
262: extern int pipe8(); /* Piped Events subtest # 8 */
263: extern int pipe9(); /* Piped Events subtest # 9 */
264: extern int pipe10(); /* Piped Events subtest # 10 */
265: extern int pipe11(); /* Piped Events subtest # 11 */
266: extern int pipe12(); /* Piped Events subtest # 12 */
267: extern int pipe13(); /* Piped Events subtest # 13 */
268: extern int pipe14(); /* Piped Events subtest # 14 */
269: extern int pipe15(); /* Piped Events subtest # 15 */
270: extern int pipe16(); /* Piped Events subtest # 16 */
271: extern int pipe17(); /* Piped Events subtest # 17 */
272:
273:
274:
275: /*
276: * These definitions must agree with those in "diagnostics/INCLUDE"
277: */
278: #define DMP_PG_0 0x36000 /* addresses for code and data */
279: #define DMP_PG_1 DMP_PG_0+0x400
280: #define DMP_PG_2 DMP_PG_1+0x400
281: #define DMP_PG_3 DMP_PG_2+0x400
282: #define DMP_PG_4 DMP_PG_3+0x400
283: #define DMP_PG_5 DMP_PG_4+0x400
284: #define DMP_PG_6 DMP_PG_5+0x400
285: #define DMP_PG_7 DMP_PG_6+0x400
286:
287: #define DMP_OP_1 DMP_PG_3-4 /* 1st data word */
288: #define DMP_OP_2 DMP_PG_7-4 /* 2nd data word */
289:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.