|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000218 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _resop_test ! 6: 6 00000000 _resop_test: ! 7: 7 0000E02C 0000 .word L381 ! 8: 8 0000E02E # ! 9: 9 0000E02E # #include "evt_defs.h" ! 10: 10 0000E02E # ! 11: 11 0000E02E # /* ! 12: 12 0000E02E # ******************************************************************** ! 13: 13 0000E02E # * ! 14: 14 0000E02E # * MONITOR FOR THE FPP RESERVED OPERAND EVENT TEST ! 15: 15 0000E02E # * ! 16: 16 0000E02E # * 22-Mar-85 : written ! 17: 17 0000E02E # * 16-Jul-85 : changed to match "resop_tbl" changes ! 18: 18 0000E02E # * 24-Jul-85 : don't run LOGF with the "no-fpp" firmware ! 19: 19 0000E02E # * ! 20: 20 0000E02E # ******************************************************************** ! 21: 21 0000E02E # */ ! 22: 22 0000E02E # resop_test() ! 23: 23 0000E02E # { ! 24: 24 0000E02E 13 00c4 jbr L383 ! 25: 25 0000E031 L384: ! 26: 26 0000E031 # event_msg = "Reserved Operand"; ! 27: 27 0000E031 .data 1 ! 28: 28 00000218 * L385: ! 29: 29 00000218 * 5265736572766564204F70657 .ascii "Reserved Operand\0" ! 30: 2616E6400 ! 31: 30 00000229 * .text ! 32: 31 0000E031 0d 8f00000218 effffffff0 movl $L385,_event_msg ! 33: 32 0000E03C # test_event = RESOP_CODE; ! 34: 33 0000E03C 0d 2d efffffffe9 movl $45,_test_event ! 35: 34 0000E043 # disable_mask = 0; /* don't disable any events */ ! 36: 35 0000E043 4b efffffffe3 clrw _disable_mask ! 37: 36 0000E049 # evt_disabled = FALSE; /* expected event is enabled */ ! 38: 37 0000E049 4d efffffffdd clrl _evt_disabled ! 39: 38 0000E04F # if( evt_inst ) { /* was the op-code specified? */ ! 40: 39 0000E04F 5d efffffffd7 tstl _evt_inst ! 41: 40 0000E055 31 62 jeql L386 ! 42: 41 0000E057 # inst_index = get_resop_index( evt_inst ); ! 43: 42 0000E057 dd efffffffcf pushl _evt_inst ! 44: 43 0000E05D fe 08 ef00000182 callf $8,_get_resop_index ! 45: 44 0000E064 0d 50 efffffffc1 movl r0,_inst_index ! 46: 45 0000E06B # if( inst_index < 0 ) { ! 47: 46 0000E06B 5d efffffffbb tstl _inst_index ! 48: 47 0000E071 81 3d jgeq L388 ! 49: 48 0000E073 # if( (prt_hdrs) && (cycle == 1) ) { /* no reserved ops */ ! 50: 49 0000E073 5d efffffffb3 tstl _prt_hdrs ! 51: 50 0000E079 31 33 jeql L389 ! 52: 51 0000E07B 1d efffffffab 01 cmpl _cycle,$1 ! 53: 52 0000E082 21 2a jneq L389 ! 54: 53 0000E084 # writes( ! 55: 54 0000E084 # "There are no floating RESERVED OPERANDS with op-code" ); ! 56: 55 0000E084 .data 1 ! 57: 56 00000229 * L391: ! 58: 57 00000229 * 546865726520617265206E6F2 .ascii "There are no floating RESERVED OPERANDS with op-code\0" ! 59: 0666C6F6174696E6720524553 ! 60: 4552564544204F504552414E4 ! 61: 4532077697468206F702D636F ! 62: 646500 ! 63: 58 0000025e * .text ! 64: 59 0000E084 dd 8f00000229 pushl $L391 ! 65: 60 0000E08A fe 08 efffffff9b callf $8,_writes ! 66: 61 0000E091 # writeh( evt_inst ); /* print the ersatz op-code */ ! 67: 62 0000E091 dd efffffff95 pushl _evt_inst ! 68: 63 0000E097 fe 08 efffffff8e callf $8,_writeh ! 69: 64 0000E09E # writec('\n'); ! 70: 65 0000E09E dd 0a pushl $10 ! 71: 66 0000E0A0 fe 08 efffffff85 callf $8,_writec ! 72: 67 0000E0A7 # error = TRUE; /* needed for line feed control */ ! 73: 68 0000E0A7 0d 01 efffffff7e movl $1,_error ! 74: 69 0000E0AE # } ! 75: 70 0000E0AE # } else ! 76: 71 0000E0AE L389: ! 77: 72 0000E0AE 11 07 jbr L394 ! 78: 73 0000E0B0 L388: ! 79: 74 0000E0B0 # test_resop_inst(); /* test the instruction */ ! 80: 75 0000E0B0 fe 04 ef00000041 callf $4,_test_resop_inst ! 81: 76 0000E0B7 L394: ! 82: 77 0000E0B7 # } else /* test all applicable op-codes */ ! 83: 78 0000E0B7 11 3b jbr L396 ! 84: 79 0000E0B9 L386: ! 85: 80 0000E0B9 # for(inst_index=0; inst_index < size_resop_tbl; inst_index++) ! 86: 81 0000E0B9 4d efffffff6d clrl _inst_index ! 87: 82 0000E0BF L399: ! 88: 83 0000E0BF 1d efffffff67 efffffff62 cmpl _inst_index,_size_resop_tbl ! 89: 84 0000E0CA 81 28 jgeq L398 ! 90: 85 0000E0CC # if( (!no_fpp_wcs) || ! 91: 86 0000E0CC # (resop_tbl[inst_index].inst_code != LOGF_OP_CODE) ) ! 92: 87 0000E0CC 5d efffffff5a tstl _no_fpp_wcs ! 93: 88 0000E0D2 31 11 jeql L9999 ! 94: 89 0000E0D4 5c 18 efffffff51 50 mull3 $24,_inst_index,r0 ! 95: 90 0000E0DC 1d e000000000 35 cmpl _resop_tbl(r0),$53 ! 96: 91 0000E0E3 31 07 jeql L400 ! 97: 92 0000E0E5 L9999: ! 98: 93 0000E0E5 # test_resop_inst(); ! 99: 94 0000E0E5 fe 04 ef0000000c callf $4,_test_resop_inst ! 100: 95 0000E0EC # } ! 101: 96 0000E0EC L400: ! 102: 97 0000E0EC L397: ! 103: 98 0000E0EC 6d efffffff3a incl _inst_index ! 104: 99 0000E0F2 11 cb jbr L399 ! 105: 100 0000E0F4 L398: ! 106: 101 0000E0F4 L396: ! 107: 102 0000E0F4 40 ret#2 ! 108: 103 0000E0F5 .set L381,0x0 ! 109: 104 0000E0F5 L383: ! 110: 105 0000E0F5 13 ff39 jbr L384 ! 111: 106 0000E0F8 .data ! 112: 107 00000218 * .text ! 113: 108 0000E0F8 .align 1 ! 114: 109 0000E0F8 .globl _test_resop_inst ! 115: 110 0000E0F8 _test_resop_inst: ! 116: 111 0000E0F8 0000 .word L401 ! 117: 112 0000E0FA # ! 118: 113 0000E0FA # ! 119: 114 0000E0FA # ! 120: 115 0000E0FA # /* ! 121: 116 0000E0FA # *************************************************************************** ! 122: 117 0000E0FA # * ! 123: 118 0000E0FA # * Run the Reserved Operand Fault on one instruction ! 124: 119 0000E0FA # * ! 125: 120 0000E0FA # *************************************************************************** ! 126: 121 0000E0FA # */ ! 127: 122 0000E0FA # test_resop_inst() ! 128: 123 0000E0FA # { ! 129: 124 0000E0FA 13 00e5 jbr L403 ! 130: 125 0000E0FD L404: ! 131: 126 0000E0FD # valid_test = TRUE; /* a test is being run */ ! 132: 127 0000E0FD 0d 01 efffffff28 movl $1,_valid_test ! 133: 128 0000E104 # op_code = resop_tbl[ inst_index ].inst_code; ! 134: 129 0000E104 5c 18 efffffff21 50 mull3 $24,_inst_index,r0 ! 135: 130 0000E10C 0d e000000000 efffffff15 movl _resop_tbl(r0),_op_code ! 136: 131 0000E117 # op_name = resop_tbl[ inst_index ].name; ! 137: 132 0000E117 5c 18 efffffff0e 50 mull3 $24,_inst_index,r0 ! 138: 133 0000E11F 0d e000000004 efffffff02 movl _resop_tbl+4(r0),_op_name ! 139: 134 0000E12A # precision = resop_tbl[ inst_index ].precision; ! 140: 135 0000E12A 5c 18 effffffefb 50 mull3 $24,_inst_index,r0 ! 141: 136 0000E132 0d e00000000c effffffeef movl _resop_tbl+12(r0),_precision ! 142: 137 0000E13D # no_ops = resop_tbl[ inst_index ].no_operands; ! 143: 138 0000E13D 5c 18 effffffee8 50 mull3 $24,_inst_index,r0 ! 144: 139 0000E145 0d e000000008 effffffedc movl _resop_tbl+8(r0),_no_ops ! 145: 140 0000E150 # data_ptr = resop_tbl[ inst_index ].evt_data; ! 146: 141 0000E150 5c 18 effffffed5 50 mull3 $24,_inst_index,r0 ! 147: 142 0000E158 0d e000000010 effffffec9 movl _resop_tbl+16(r0),_data_ptr ! 148: 143 0000E163 # max_index = *resop_tbl[ inst_index ].evt_data_cnt; ! 149: 144 0000E163 5c 18 effffffec2 50 mull3 $24,_inst_index,r0 ! 150: 145 0000E16B 0d f000000014 effffffeb6 movl *_resop_tbl+20(r0),_max_index ! 151: 146 0000E176 # if( precision == SGL ) { ! 152: 147 0000E176 1d effffffeb0 01 cmpl _precision,$1 ! 153: 148 0000E17D 21 10 jneq L405 ! 154: 149 0000E17F # sgl_op = TRUE; ! 155: 150 0000E17F 0d 01 effffffea6 movl $1,_sgl_op ! 156: 151 0000E186 # acc_ld_size = SGL; /* use a sgl precision Acc. */ ! 157: 152 0000E186 0d 01 effffffe9f movl $1,_acc_ld_size ! 158: 153 0000E18D # } else { ! 159: 154 0000E18D 11 0d jbr L406 ! 160: 155 0000E18F L405: ! 161: 156 0000E18F # sgl_op = FALSE; ! 162: 157 0000E18F 4d effffffe97 clrl _sgl_op ! 163: 158 0000E195 # acc_ld_size = DBL; /* use a dbl precision Acc. */ ! 164: 159 0000E195 0d 02 effffffe90 movl $2,_acc_ld_size ! 165: 160 0000E19C # } ! 166: 161 0000E19C L406: ! 167: 162 0000E19C # if( (prt_hdrs) && (cycle == 1) ) { ! 168: 163 0000E19C 5d effffffe8a tstl _prt_hdrs ! 169: 164 0000E1A2 31 36 jeql L407 ! 170: 165 0000E1A4 1d effffffe82 01 cmpl _cycle,$1 ! 171: 166 0000E1AB 21 2d jneq L407 ! 172: 167 0000E1AD # if( (!evt_inst) && /* print a line feed if */ ! 173: 168 0000E1AD # (op_code == SUBD_OP_CODE) ) /* the 1st line is full */ ! 174: 169 0000E1AD 5d effffffe79 tstl _evt_inst ! 175: 170 0000E1B3 21 18 jneq L408 ! 176: 171 0000E1B5 1d effffffe71 8900d7 cmpl _op_code,$215 ! 177: 172 0000E1BE 21 0d jneq L408 ! 178: 173 0000E1C0 # writes("\n "); ! 179: 174 0000E1C0 .data 1 ! 180: 175 0000025e * L409: ! 181: 176 0000025e * 0A20202020202020202020202 .ascii "\12 \0" ! 182: 0202020202020202020202000 ! 183: 177 00000277 * .text ! 184: 178 0000E1C0 dd 8f0000025e pushl $L409 ! 185: 179 0000E1C6 fe 08 effffffe5f callf $8,_writes ! 186: 180 0000E1CD # writes( op_name ); /* print the instruction's name */ ! 187: 181 0000E1CD L408: ! 188: 182 0000E1CD dd effffffe59 pushl _op_name ! 189: 183 0000E1D3 fe 08 effffffe52 callf $8,_writes ! 190: 184 0000E1DA # } ! 191: 185 0000E1DA # test_inst(); ! 192: 186 0000E1DA L407: ! 193: 187 0000E1DA fe 04 effffffe4b callf $4,_test_inst ! 194: 188 0000E1E1 # } ! 195: 189 0000E1E1 40 ret#2 ! 196: 190 0000E1E2 .set L401,0x0 ! 197: 191 0000E1E2 L403: ! 198: 192 0000E1E2 13 ff18 jbr L404 ! 199: 193 0000E1E5 .data ! 200: 194 00000218 * .text ! 201: 195 0000E1E5 00 .align 1 ! 202: 196 0000E1E6 .globl _get_resop_index ! 203: 197 0000E1E6 _get_resop_index: ! 204: 198 0000E1E6 0000 .word L411 ! 205: 199 0000E1E8 # ! 206: 200 0000E1E8 # ! 207: 201 0000E1E8 # ! 208: 202 0000E1E8 # /* ! 209: 203 0000E1E8 # *************************************************************************** ! 210: 204 0000E1E8 # * ! 211: 205 0000E1E8 # * GET THE INSTRUCTION TABLE INDEX FOR AN OP-CODE ! 212: 206 0000E1E8 # * ! 213: 207 0000E1E8 # * Given the op_code of an instruction, return the instruction's index in ! 214: 208 0000E1E8 # * the reserved operand instruction table. Return a negative number if the ! 215: 209 0000E1E8 # * op-code isn't in the table. ! 216: 210 0000E1E8 # * ! 217: 211 0000E1E8 # * LOGF won't give reserved operand events with the "no-fpp" WCS firmware ! 218: 212 0000E1E8 # * so return a negative number if it is the test instruction. ! 219: 213 0000E1E8 # * ! 220: 214 0000E1E8 # ************************************************************************** ! 221: 215 0000E1E8 # */ ! 222: 216 0000E1E8 # get_resop_index( op_code ) ! 223: 217 0000E1E8 # { ! 224: 218 0000E1E8 11 52 jbr L413 ! 225: 219 0000E1EA L414: ! 226: 220 0000E1EA # int x; ! 227: 221 0000E1EA # x = 0; ! 228: 222 0000E1EA 4d adc8 clrl -56(fp) ! 229: 223 0000E1ED # while( (resop_tbl[x].inst_code != op_code) && (x < size_resop_tbl) ) ! 230: 224 0000E1ED L415: ! 231: 225 0000E1ED 5c 18 adc8 50 mull3 $24,-56(fp),r0 ! 232: 226 0000E1F2 1d e000000000 ad04 cmpl _resop_tbl(r0),4(fp) ! 233: 227 0000E1FA 31 0f jeql L416 ! 234: 228 0000E1FC 1d adc8 effffffe28 cmpl -56(fp),_size_resop_tbl ! 235: 229 0000E204 81 05 jgeq L416 ! 236: 230 0000E206 # x++; ! 237: 231 0000E206 6d adc8 incl -56(fp) ! 238: 232 0000E209 11 e2 jbr L415 ! 239: 233 0000E20B L416: ! 240: 234 0000E20B # if( x == size_resop_tbl ) ! 241: 235 0000E20B 1d adc8 effffffe19 cmpl -56(fp),_size_resop_tbl ! 242: 236 0000E213 21 04 jneq L417 ! 243: 237 0000E215 # x = -1; ! 244: 238 0000E215 ec 01 adc8 mnegl $1,-56(fp) ! 245: 239 0000E219 # if( (no_fpp_wcs) && (resop_tbl[inst_index].inst_code == LOGF_OP_CODE) ) ! 246: 240 0000E219 L417: ! 247: 241 0000E219 5d effffffe0d tstl _no_fpp_wcs ! 248: 242 0000E21F 31 15 jeql L418 ! 249: 243 0000E221 5c 18 effffffe04 50 mull3 $24,_inst_index,r0 ! 250: 244 0000E229 1d e000000000 35 cmpl _resop_tbl(r0),$53 ! 251: 245 0000E230 21 04 jneq L418 ! 252: 246 0000E232 # x = -1; /* don't test LOGF w/ no-fpp WCS */ ! 253: 247 0000E232 ec 01 adc8 mnegl $1,-56(fp) ! 254: 248 0000E236 # return( x ); ! 255: 249 0000E236 L418: ! 256: 250 0000E236 0d adc8 50 movl -56(fp),r0 ! 257: 251 0000E23A 40 ret#1 ! 258: 252 0000E23B # } ! 259: 253 0000E23B 40 ret#1 ! 260: 254 0000E23C .set L411,0x0 ! 261: 255 0000E23C L413: ! 262: 256 0000E23C 3c 38 5d 5e subl3 $56,fp,sp ! 263: 257 0000E240 11 a8 jbr L414 ! 264: 258 0000E242 .data ! 265: 259 00000218 * # ! 266: 260 00000218 * # ! 267: 260 00000218 * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.