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