|
|
1.1 root 1:
2: /**************************************************************************
3: *
4: * FLOATING POINT PROCESSOR DIAGNOSTIC DEFINITIONS
5: *
6: * 10-Dec-84 : added "enable_data_cache" option flag
7: * 26-Jun-85 : added MULL2 and MULL3
8: **************************************************************************/
9:
10:
11: #define TRUE 1
12: #define FALSE 0
13:
14: /*
15: * some tests are accessed via tables of pointers to the test functions
16: */
17: typedef int (*func_ptr_array[20])(); /* array of pointers to functions */
18:
19:
20: /*
21: * Precisions used
22: */
23: #define SGL 1
24: #define DBL 2
25:
26:
27: /*
28: * Operand types
29: */
30: #define NONE 0 /* no operand */
31: #define LOAD 1 /* operand is a data address */
32: #define STORE 2 /* operand is a STORE address */
33:
34:
35: /*
36: * Priveleged Register contents
37: */
38: #define SBR 0 /*system base register */
39: #define SLR 1 /*system length reg */
40: #define P0BR 2 /*p0 base reg */
41: #define P0LR 3 /*p0 length reg */
42: #define P1BR 4 /*p1 base reg */
43: #define P1LR 5 /*p1 length reg */
44: #define P2BR 6 /*p2 base reg */
45: #define P2LR 7 /*p2 length reg */
46: #define IPL 8 /*int priority level reg */
47: #define MME 9 /*memory mgmt enable reg */
48: #define TBIA 10 /*trans buf invalidate all */
49: /*entries */
50: #define TBIS 11 /*trans buf invalidate single */
51: /*entry */
52: #define DCK 12 /*data cache key */
53: #define CCK 13 /*code cache key */
54: #define PCBB 14 /*process control block base */
55: #define ISP 15 /*interrupt stack pointer */
56: #define SIRR 16 /*software int request reg */
57: #define SISR 17 /*software int summary reg */
58: #define SCBB 18 /*system control block base reg */
59: #define KSP 19 /*kernel stack pointer reg */
60: #define USP 20 /*user stack pointer */
61: #define DCB 21 /*CPU2 DCB */
62: #define PACC 23 /*purge (invalidate) all pages */
63: /*of process in code cache */
64: #define P1DC 24 /*purge one page of data cache */
65: #define PADC 25 /*purge all the pages of */
66: /*process in data cache */
67: #define HISR 26 /* Hardware interrupt summary reg */
68: #define DCR 27 /* Diagnostic control register */
69: #define PDCS 28 /* Purge 1 data cache slot */
70:
71:
72:
73: /*
74: * PSL bit definitions
75: */
76: #define PSL_C 0x1 /* bit(00) CARRY bit */
77: #define PSL_V 0x2 /* bit(01) OVERFLOW bit */
78: #define PSL_Z 0x4 /* bit(02) ZERO bit */
79: #define PSL_N 0x8 /* bit(03) NEGATIVE bit */
80: #define PSL_EN_T 0x10 /* bit(04) Enable TRACE bit */
81: #define PSL_EN_OVFL 0x20 /* bit(05) Enable OVERFLOW bit*/
82: #define PSL_EN_UNDFL 0x40 /* bit(06) Enable UNDERFLOW */
83: #define PSL_DBL 0x80 /* bit(07) DBL Precision acc. */
84: #define ENABLE_EVENTS 0x60 /* enable INT OVFL & UNDFL */
85:
86:
87: /*
88: * Event Codes
89: */
90: #define SW_IPL1_CODE 0x1e /* s/w interrupt (IPL = 1) */
91: #define BUS_ER_CODE 0x20 /* buss error interrupt */
92: #define RESINST_CODE 0x2c /* priveleged/reserved instr. */
93: #define RESOP_CODE 0x2d /* reserved operand fault */
94: #define RESAD_CODE 0x2e /* reserved address fault */
95: #define TRACE_CODE 0x33 /* trace trap */
96: #define ARITH_CODE 0x34 /* arithmetic fault */
97: #define ALIGN_CODE 0x35 /* alignment fault */
98: #define SFE_CODE 0x36 /* system forced exception */
99: #define FPM_CODE 0x37 /* fpp emulation trap */
100:
101: /*
102: * Arithmetic Event Types
103: */
104: #define INT_OVFL_CODE 1 /* integer overflow fault */
105: #define INT_0_DIV_CODE 2 /* integer divide by 0 fault */
106: #define FLT_0_DIV_CODE 3 /* floating divide by 0 fault */
107: #define FLT_OVFL_CODE 4 /* floating overflow fault */
108: #define FLT_UNDFL_CODE 5 /* floating underflow fault */
109:
110:
111: /*
112: * jump condition flag definitions
113: */
114: #define POSITIVE 2 /* positive flag bit */
115: #define ZERO 4 /* zero flag bit */
116: #define NEGATIVE 8 /* negative flag bit */
117:
118:
119: /*
120: * OP-CODEs for the FPP instruction set
121: */
122: #define LDF_OP_CODE 0x06 /* sgl load acc. instr */
123: #define LDD_OP_CODE 0x07 /* dbl load acc. instr */
124: #define LNF_OP_CODE 0x16 /* sgl load-neg acc. instr */
125: #define LND_OP_CODE 0x17 /* dbl load-neg acc. instr */
126: #define STF_OP_CODE 0x26 /* sgl store acc. instr */
127: #define STD_OP_CODE 0x27 /* dbl store acc. instr */
128: #define CMPF_OP_CODE 0x36 /* sgl compare instr */
129: #define CMPD_OP_CODE 0x37 /* dbl compare instr */
130: #define CMPF2_OP_CODE 0x46 /* sgl compare 2 instr */
131: #define CMPD2_OP_CODE 0x47 /* dbl compare 2 instr */
132: #define TSTF_OP_CODE 0x56 /* sgl test acc. instr */
133: #define TSTD_OP_CODE 0x57 /* dbl test acc. instr */
134: #define PUSHD_OP_CODE 0x67 /* dbl push acc. instr */
135: #define CVLF_OP_CODE 0x76 /* convert int to sgl instr */
136: #define CVLD_OP_CODE 0x77 /* convert int to dbl instr */
137: #define CVFL_OP_CODE 0x86 /* convert sgl to int instr */
138: #define CVDL_OP_CODE 0x87 /* convert dbl to int instr */
139: #define LDFD_OP_CODE 0x97 /* load sgl to dbl instr */
140: #define CVDF_OP_CODE 0xa6 /* convert dbl to sgl instr */
141: #define NEGF_OP_CODE 0xb6 /* negate sgl acc. instr */
142: #define NEGD_OP_CODE 0xb7 /* negate dbl acc. instr */
143: #define ADDF_OP_CODE 0xc6 /* sgl add instr */
144: #define ADDD_OP_CODE 0xc7 /* dbl add instr */
145: #define SUBF_OP_CODE 0xd6 /* sgl subtract instr */
146: #define SUBD_OP_CODE 0xd7 /* dbl subtract instr */
147: #define MULF_OP_CODE 0xe6 /* sgl multiply instr */
148: #define MULD_OP_CODE 0xe7 /* dbl multiply instr */
149: #define DIVF_OP_CODE 0xf6 /* sgl divide instr */
150: #define DIVD_OP_CODE 0xf7 /* dbl divide instr */
151: #define SINF_OP_CODE 0x05 /* sgl sine instr */
152: #define COSF_OP_CODE 0x15 /* sgl cosine instr */
153: #define ATANF_OP_CODE 0x25 /* sgl arc-tangent instr */
154: #define LOGF_OP_CODE 0x35 /* sgl natural log instr */
155: #define SQRTF_OP_CODE 0x45 /* sgl square root instr */
156: #define EXPF_OP_CODE 0x55 /* sgl "e to the x" instr */
157: #define MULL2_OP_CODE 0x4c /* multiply integer 2 instr */
158: #define MULL3_OP_CODE 0x5c /* multiply integer 3 instr */
159:
160: #define NO_INSTRUCTIONS 37 /* 37 fpp instructions */
161:
162:
163: /*
164: * definitions for addressing mode tests
165: */
166: #define ADR_ABSOLUTE 1 /* absolute address */
167: #define ADR_LITERAL 2 /* literal -short immediate byte */
168: #define ADR_IM_B 3 /* immediate byte */
169: #define ADR_IM_W 4 /* immediate word */
170: #define ADR_IM_L 5 /* immediate long-word */
171: #define ADR_B_DSP 6 /* byte displ relative */
172: #define ADR_W_DSP 7 /* word displ relative */
173: #define ADR_L_DSP 8 /* long-word displ relative */
174: #define ADR_B_DSP_DEF 9 /* byte displ relative deferred */
175: #define ADR_W_DSP_DEF 10 /* word displ relative deferred */
176: #define ADR_L_DSP_DEF 11 /* long-word displ relative deferred */
177: #define ADR_REG 12 /* direct register */
178: #define ADR_REG_DEF 13 /* register deferred */
179: #define ADR_FP_DEF 14 /* FP deferred */
180: #define ADR_SP_DEF 15 /* SP deferred */
181: #define ADR_PUSH 16 /* auto-decrement SP */
182: #define ADR_POP 17 /* auto-increment SP */
183: #define ADR_POP_DEF 18 /* auto-increment SP deferred */
184: #define ADR_REG_B 19 /* register + byte displ */
185: #define ADR_REG_W 20 /* register + word displ */
186: #define ADR_REG_L 21 /* register + long-word displ */
187: #define ADR_REG_B_DEF 22 /* register + byte displ deferred */
188: #define ADR_REG_W_DEF 23 /* register + word displ deferred */
189: #define ADR_REG_L_DEF 24 /* register + long-word displ deferred */
190: #define ADR_I_FP_DEF 25 /* indexed (frame pointer deferred) */
191: #define ADR_I_L 26 /* indexed (longword displacement) */
192: #define ADR_I_REG_DEF 27 /* indexed (register deferred) */
193: #define ADR_I_L_DEF 28 /* indexed (longword displacement deferred) */
194: #define SIZ_ADDR_MODE_TABLE 29 /* allow for 29 addressing types ( w/ '0' ) */
195:
196:
197:
198: /*
199: * Define the halt codes for the tests
200: */
201:
202: #define UNEXP_EVT_HLT 0 /* unexpected event */
203: #define BAD_ACC_HLT 1 /* bad final Acc. */
204: #define BAD_REG_HLT 2 /* bad final register */
205: #define BAD_PSL_HLT 3 /* wrong PSL value */
206: #define NO_EVT_HLT 4 /* did not Get event */
207: #define EVT_MSK_HLT 5 /* got masked event */
208: #define PUSH_PSL_HLT 6 /* bad PSL on stack */
209: #define BAD_FPM_STK_HLT 7 /* stack error w/ FPM */
210: #define PUSH_CNT_HLT 8 /* wrong # ops on stack */
211: #define BAD_STORE_HLT 9 /* bad data stored */
212:
213:
214:
215:
216: /*****************************************************************************
217: *
218: * These are the global variables
219: *
220: *****************************************************************************/
221:
222:
223: /*
224: * These are the run option flags
225: */
226: extern int halt_flg; /* halt on error flag */
227: extern int loop_on_err; /* loop on error flag */
228: extern int prt_error; /* print error message flag */
229: extern int prt_hdrs; /* print main header flag */
230: extern int prt_sbtsts; /* outdated -print subtest headers*/
231: extern int en_data_cache; /* enable the data chache flag */
232:
233:
234:
235: /*
236: * These are used by the tests as control flags
237: */
238: extern int no_fpp_wcs; /* "NO-FPP WCS" loaded flag */
239: extern int valid_test; /* a valid test was requested */
240: extern int test_no; /* fpp test number */
241: extern int run_all; /* all subtests run flag */
242: extern int count; /* cycle count to run */
243: extern int nonstop; /* run forever flag n */
244: extern int run_list; /* test # (or 0) to test */
245: extern int subtest; /* fpp subtest number */
246: extern int cycle; /* current test cycle */
247: extern int force_loop; /* loop on error signal */
248: extern int errcnt; /* error count */
249: extern int err_code; /* error code (for subtests) */
250: extern int zero; /* a known '0' data word */
251: extern int nop_cnt; /* # of NOPs between instr's */
252: extern int i_cache_hit; /* flag -test instr. in cache */
253: extern int event_type; /* actual event type */
254: extern int event_code; /* actual arith. fault type */
255: extern int test_event; /* event type under test */
256: extern int exp_event; /* expected event type (or 0) */
257: extern int exp_code; /* expected event code */
258: extern int event_return; /* return addr. after event */
259: extern int unexp_event_ret; /* return if event unexpected */
260: extern int fpm_trap_occurred; /* flag -got an FPM trap */
261: extern int monitor_fp; /* monitor's frame pointer */
262: extern int monitor_sp; /* monitor's stack pointer */
263: extern int run_code_psl; /* "run_code"'s entry PSL */
264: extern int pre_event_sp; /* stack pointer before event */
265: extern int post_event_sp; /* stack pointer after event */
266: extern int pre_event_fp; /* frame pointer before event */
267: extern int post_event_fp; /* frame pointer after event */
268: extern int post_event_psl; /* PSL after an (FPM) event */
269: extern int event_pc; /* PC on stack from an event */
270: extern int event_psl; /* PSL on stack from an event */
271: extern int pointer_data; /* location to set SP / FP to */
272: extern int pointer_data_2; /* LSW data for SP / FP addrs */
273: extern int address_fault_expected; /* fault expected or not */
274: extern int loop_addr; /* address to loop on error */
275: extern int next_addr; /* start of "next addr. test" */
276: extern int addr_mode; /* addressing type under test */
277: extern int addr_code; /* code for addressing op. #1 */
278: extern int addr_code2; /* code for addressing op. #2 */
279: extern int addr_code3; /* code for addressing op. #3 */
280: extern int addr_codeB; /* 2nd addr code for indexing */
281: extern int test_index; /* index to a specific test */
282: extern int inst_index; /* index to a specific instr. */
283: extern int index; /* test data index */
284: extern int index2; /* test data index # 2 */
285: extern int error; /* an error exists flag */
286: extern int clock_event; /* diagnostic flag -rtc event */
287: extern int status_index; /* index to status array */
288: extern int status_array[]; /* holds (+), (-), (0) words */
289: extern char *subtest_message; /* description of subtest */
290: extern char *error_message; /* description of error */
291: extern char *event_msg; /* description of event */
292: extern char *addressing_modes[SIZ_ADDR_MODE_TABLE];
293:
294: /*
295: * These are the canned error messages
296: */
297: extern char *k_mode_msg; /* Kernal Mode message */
298: extern char *u_mode_msg; /* User Mode message */
299: extern char *i_cache_hit_msg; /* instr. cache hit message */
300: extern char *i_cache_miss_msg; /* instr. cache miss message */
301: extern char *bad_result_msg; /* incorrect result error */
302: extern char *acc_modified_msg; /* Accumulator modified msg. */
303: extern char *bad_acc_msg; /* incorrect ACC message */
304: extern char *psl_modified_msg; /* PSL modified message */
305: extern char *bad_psl_msg; /* incorrect PSL message */
306: extern char *reg_modified_msg; /* register modified message */
307: extern char *trans_flt_cnt_msg; /* wrong # of page faults */
308: extern char *no_evt_msg; /* expected event didn't occur*/
309: extern char *disbl_evt_msg; /* a disabled event occurred */
310: extern char *push_cnt_msg; /* wrong # ops. pushed w/ evt.*/
311: extern char *psl_pushed_msg; /* wrong PSL pushed w/ event */
312: extern char *pc_pushed_msg; /* wrong PC pushed w/ event */
313: extern char *trans_acc_er_msg; /* Acc wrong after pg fault */
314: extern char *bad_fpm_stack_msg; /* stack wrong after FPM trap */
315: extern char *bad_fpm_acc_msg; /* Acc wrong after FPM trap */
316:
317: /*
318: * These values are used for alternating data patterns in error looping
319: */
320: extern int old_indx; /* previous test data index */
321: extern int loop_val_1a; /* MSW of 1st data op in loop */
322: extern int loop_val_1b; /* MSW of 1st data op in loop */
323: extern int loop_val_1c; /* LSW of 1st data op in loop */
324: extern int loop_val_1d; /* LSW of 1st data op in loop */
325: extern int loop_val_2a; /* MSW of 2nd data op in loop */
326: extern int loop_val_2b; /* MSW of 2nd data op in loop */
327: extern int loop_val_2c; /* LSW of 2nd data op in loop */
328: extern int loop_val_2d; /* LSW of 2nd data op in loop */
329:
330:
331: /*
332: * data structure definitions
333: */
334:
335: struct u64 { /* 64 bit (dbl) integer */
336: unsigned m; /* -most significant bits */
337: unsigned l; /* -least significant bits */
338: };
339:
340:
341: struct cmpd_data_t { /* compare 2 dbl opderands */
342: struct u64 one; /* -1st compare value */
343: struct u64 two; /* -2nd compare value */
344: int flag; /* -expected condition flg */
345: };
346:
347:
348: struct cmpf_data_t { /* compare 2 sgl operands */
349: int one; /* -1st compare value */
350: int two; /* -2nd compare value */
351: int flag; /* -expected condition flg */
352: };
353:
354:
355: struct cvds_data_t { /* convert dbl op to sgl */
356: struct u64 ld; /* -data to load */
357: unsigned exp; /* -converted result */
358: };
359:
360:
361: struct cvfl_data_t { /* convert sgl to integer */
362: unsigned ld; /* -data to load */
363: unsigned exp; /* -converted result */
364: };
365:
366:
367: struct ldd_data_t { /* load / store doubles */
368: struct u64 ld; /* -data to load */
369: struct u64 exp; /* -expected results */
370: };
371:
372:
373: struct ldf_data_t { /* load / store singles */
374: unsigned ld; /* -data to load */
375: unsigned exp; /* -expected results */
376: };
377:
378:
379: struct ldfd_data_t { /* load sgl convert to dbl */
380: unsigned ld; /* -sgl data to load */
381: struct u64 exp; /* -dbl data expected */
382: };
383:
384:
385: struct addf_data_t { /* sgl precision +, -, *, / */
386: unsigned op_1; /* -operand 1 ( in ACC. ) */
387: unsigned op_2; /* -operand 2 */
388: unsigned exp; /* -expected result */
389: };
390:
391:
392: struct addd_data_t { /* dbl precision +, -, *, / */
393: struct u64 op_1; /* -operand 1 ( in ACC. ) */
394: struct u64 op_2; /* -operand 2 */
395: struct u64 exp; /* -expected result */
396: };
397:
398:
399: struct addd_ovflw_t { /* dbl reserved operands */
400: struct u64 op_1; /* -operand 1 ( in ACC. ) */
401: struct u64 op_2; /* -operand 2 ( RESOP ) */
402: };
403:
404:
405: struct addf_ovflw_t { /* sgl reserved operands */
406: unsigned op_1; /* -operand 1 ( in ACC. ) */
407: unsigned op_2; /* -operand 2 ( RESOP ) */
408: };
409:
410:
411:
412: /*
413: * data variables used by the tests (must be declared someplace)
414: */
415: extern struct ldf_data_t ldf_1_data[]; /* LDF data pattern array */
416: extern int max_ldf_1_index; /* (# data patterns) -1 */
417: extern struct ldf_data_t lnf_1_data[]; /* LNF */
418: extern int max_lnf_1_index;
419: extern struct addf_data_t addf_1_data[]; /* ADDF */
420: extern int max_addf_1_index;
421: extern struct addf_data_t subf_1_data[]; /* SUBF */
422: extern int max_subf_1_index;
423: extern struct addf_data_t mulf_1_data[]; /* MULF */
424: extern int max_mulf_1_index;
425: extern struct addf_data_t divf_1_data[]; /* DIVF */
426: extern int max_divf_1_index;
427: extern struct cvfl_data_t cvlf_1_data[]; /* CVLF */
428: extern int max_cvlf_1_index;
429: extern struct cmpd_data_t cmpd_1_data[]; /* CMPD */
430: extern int max_cmpd_1_index;
431: extern struct cmpd_data_t cmpd2_1_data[]; /* CMPD2 */
432: extern int max_cmpd2_1_index;
433: extern struct cmpf_data_t cmpf_1_data[]; /* CMPF */
434: extern int max_cmpf_1_index;
435: extern struct cmpf_data_t cmpf2_1_data[]; /* CMPF2 */
436: extern int max_cmpf2_1_index;
437: extern struct cvds_data_t cvdf_1_data[]; /* CVDF */
438: extern int max_cvdf_1_index;
439: extern struct cvds_data_t cvdl_1_data[]; /* CVDL */
440: extern int max_cvdl_1_index;
441: extern struct cvfl_data_t cvfl_1_data[]; /* CVFL */
442: extern int max_cvfl_1_index;
443: extern struct ldfd_data_t cvld_1_data[]; /* CVLD */
444: extern int max_cvld_1_index;
445: extern struct ldd_data_t ldd_1_data[]; /* LDD */
446: extern int max_ldd_1_index;
447: extern struct ldfd_data_t ldfd_1_data[]; /* LDFD */
448: extern int max_ldfd_1_index;
449: extern struct ldd_data_t lnd_1_data[]; /* LND */
450: extern int max_lnd_1_index;
451: extern struct addd_data_t addd_1_data[]; /* ADDD */
452: extern int max_addd_1_index;
453: extern struct addd_data_t subd_1_data[]; /* SUBD */
454: extern int max_subd_1_index;
455: extern struct addd_data_t muld_1_data[]; /* MULD */
456: extern int max_muld_1_index;
457: extern struct addd_data_t divd_1_data[]; /* DIVD */
458: extern int max_divd_1_index;
459: extern struct ldd_data_t pushd_1_data[]; /* PUSHD */
460: extern int max_pushd_1_index;
461: extern struct cvds_data_t tstd_1_data[]; /* TSTD */
462: extern int max_tstd_1_index;
463: extern struct cvfl_data_t tstf_1_data[]; /* TSTF */
464: extern int max_tstf_1_index;
465: extern struct ldf_data_t sinf_1_data[]; /* SINF */
466: extern int max_sinf_1_index;
467: extern struct ldf_data_t cosf_1_data[]; /* COSF */
468: extern int max_cosf_1_index;
469: extern struct ldf_data_t atanf_1_data[]; /* ATANF */
470: extern int max_atanf_1_index;
471: extern struct ldf_data_t expf_1_data[]; /* EXPF */
472: extern int max_expf_1_index;
473: extern struct ldf_data_t logf_1_data[]; /* LOGF */
474: extern int max_logf_1_index;
475: extern struct ldf_data_t sqrtf_1_data[]; /* SQRTF */
476: extern int max_sqrtf_1_index;
477: extern struct ldf_data_t mull_1_data[]; /* MULL2 / MULL3 */
478: extern int max_mull_1_index;
479:
480:
481:
482: /*
483: * global data variables
484: */
485: extern struct u64 dbl_value_1; /* 1st dbl test value */
486: extern struct u64 dbl_value_2; /* 2nd dbl test value */
487: extern struct u64 dbl_value_3; /* 3rd dbl test value */
488: extern struct u64 dbl_expected; /* expected dbl data */
489: extern struct u64 dbl_ld_acc; /* load dbl acc. from here */
490: extern struct u64 dbl_st_acc; /* stored dbl accumulator */
491: extern struct u64 dbl_dummy1; /* dummy quad word */
492: extern struct u64 dbl_dummy2; /* ditto */
493: extern int sgl_ld_acc; /* load sgl acc. from here */
494: extern int sgl_st_acc; /* stored sgl acc. */
495: extern int sgl_expected; /* expected sgl data */
496: extern int sgl_value_1; /* 1st sgl data value */
497: extern int sgl_value_2; /* 2nd sgl data value */
498: extern int sgl_value_3; /* 3rd sgl data value */
499: extern int sgl_value_4; /* 4th sgl data value */
500: extern int sgl_value_5; /* 5th sgl data value */
501: extern int sgl_value_6; /* 6th sgl data value */
502: extern int sgl_value_7; /* 7th sgl data value */
503: extern int sgl_value_8; /* 8th sgl data value */
504: extern int sgl_value_9; /* 9th sgl data value */
505: extern int sgl_value_10; /* 10th sgl data value */
506: extern int sgl_dummy1; /* a dummy variable */
507: extern int sgl_dummy2; /* a dummy variable, too */
508: extern int psl_val; /* PSL value */
509: extern int init_psl; /* initial PSL value */
510: extern int exp_psl; /* expected PSL value */
511: extern int test_flags; /* condition flags seen */
512: extern int flg_expected; /* condition flags expected*/
513: extern int reg_no; /* register being validated */
514: extern int regs_ok; /* flag - no reg. miscompare*/
515: extern int exp_reg; /* expected reg. value */
516: extern int act_reg; /* actual register value */
517: extern int load_regs[14]; /* load registers from here */
518: extern int store_regs[14]; /* store registers here */
519: extern int exp_regs[14]; /* expected registers data */
520: extern int exp_pc; /* expected PC */
521: extern int act_pc; /* actual PC */
522:
523:
524:
525: /*
526: * stack variables
527: */
528: extern int pop_val_1; /* 1st popped stack data */
529: extern int pop_val_2; /* 2nd popped stack data */
530: extern int pop_val_3; /* 3rd popped stack data */
531: extern int pop_val_4; /* 4th popped stack data */
532: extern int pop_val_5; /* 5th popped stack data */
533: extern int pop_val_6; /* 6th popped stack data */
534:
535: extern int fpm_ms_op; /* MS operand w/ FPM trap */
536: extern int fpm_ls_op; /* LS operand w/ FPM trap */
537: extern int fpm_op_code; /* op-code w/ FPM trap */
538: extern int fpm_pc; /* PC w/ FPM trap */
539: extern int fpm_psl; /* PSL w/ FPM trap */
540:
541:
542:
543: /*
544: * variables used in the exaustive data tests
545: */
546: extern int not_done; /* "keep testing" flag */
547: extern int fudgeing_ok; /* +/- 1 result is acceptable */
548: extern int use_BELL_data; /* use Bell Labs type fractions */
549: extern int max_BELL_index; /* # of Bell Labs type fractions */
550: extern int fraction_array[]; /* Bell Labs type fraction array */
551:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.