|
|
1.1 root 1:
2: #include "evt_defs.h"
3:
4: /*
5: ********************************************************************
6: *
7: * MONITOR FOR THE FPP EMULATION TRAP INTERFACE TEST
8: *
9: ********************************************************************
10: */
11: fpm_test()
12: {
13: event_msg = "FPP Emulation";
14: test_event = FPM_CODE;
15: disable_mask = 0; /* don't disable any events */
16: evt_disabled = FALSE; /* expected event is enabled */
17: if( evt_inst ) /* was the op-code specified? */
18: {
19: inst_index = get_fpm_index( evt_inst );
20: if( inst_index < 0 ) {
21: if( (prt_hdrs) && (cycle == 1) ) /* no reserved ops */
22: {
23: writes(
24: "There is no FLOATING POINT EMULATION with op-code" );
25: writeh( evt_inst ); /* print the ersatz op-code */
26: writec('\n');
27: error = TRUE; /* needed for line feed control */
28: }
29: } else
30: test_fpm_inst(); /* test the instruction */
31: } else /* test all applicable op-codes */
32: for(inst_index=0; inst_index < size_fpm_tbl; inst_index++)
33: test_fpm_inst();
34: }
35:
36:
37:
38: /*
39: ***************************************************************************
40: *
41: * Run the Reserved Operand Fault on one instruction
42: *
43: ***************************************************************************
44: */
45: test_fpm_inst()
46: {
47: valid_test = TRUE; /* a test is being run */
48: op_code = fpm_tbl[ inst_index ].inst_code;
49: op_name = fpm_tbl[ inst_index ].name;
50: precision = fpm_tbl[ inst_index ].precision;
51: no_ops = fpm_tbl[ inst_index ].no_operands;
52: data_ptr = fpm_data;
53: max_index = fpm_data_cnt;
54: if( precision == SGL ) {
55: sgl_op = TRUE;
56: acc_ld_size = SGL; /* use a sgl precision Acc. */
57: } else {
58: sgl_op = FALSE;
59: acc_ld_size = DBL; /* use a dbl precision Acc. */
60: }
61: if( (prt_hdrs) && (cycle == 1) ) {
62: if( (!evt_inst) && /* print a line feed if */
63: (op_code == LOGF_OP_CODE) ) /* the 1st line is full */
64: writes("\n ");
65: writes( op_name ); /* print the instruction's name */
66: }
67: test_inst();
68: }
69:
70:
71:
72: /*
73: ***************************************************************************
74: *
75: * GET THE INSTRUCTION TABLE INDEX FOR AN OP-CODE
76: *
77: * Given the op_code of an instruction, return the instruction's index in
78: * the FPM instruction table. Return a negative number if the op-code isn't
79: * in the table.
80: *
81: **************************************************************************
82: */
83: get_fpm_index( op_code )
84: {
85: int x;
86: x = 0;
87: while( (fpm_tbl[x].inst_code != op_code) && (x < size_fpm_tbl) )
88: x++;
89: if( x == size_fpm_tbl )
90: x = -1;
91: return( x );
92: }
93:
94:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.