|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 000001ec * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _undfl_test
6: 6 00000000 _undfl_test:
7: 7 0000E244 0000 .word L381
8: 8 0000E246 #
9: 9 0000E246 # #include "evt_defs.h"
10: 10 0000E246 #
11: 11 0000E246 # /*
12: 12 0000E246 # ********************************************************************
13: 13 0000E246 # *
14: 14 0000E246 # * MONITOR FOR THE FPP UNDERFLOW EVENT TEST
15: 15 0000E246 # *
16: 16 0000E246 # * 25-Mar-85 JJM: written
17: 17 0000E246 # * 29-Mar-85 JJM: mauled the beast for CVDF (cvdf has ovfl but no undfl)
18: 18 0000E246 # *
19: 19 0000E246 # ********************************************************************
20: 20 0000E246 # */
21: 21 0000E246 # undfl_test()
22: 22 0000E246 # {
23: 23 0000E246 13 00e1 jbr L383
24: 24 0000E249 L384:
25: 25 0000E249 # event_msg = "Underflow";
26: 26 0000E249 .data 1
27: 27 000001ec * L385:
28: 28 000001ec * 556E646572666C6F7700 .ascii "Underflow\0"
29: 29 000001f6 * .text
30: 30 0000E249 0d 8f000001ec effffffff0 movl $L385,_event_msg
31: 31 0000E254 # test_event = ARITH_CODE; /* expect an arithmetic fault */
32: 32 0000E254 0d 34 efffffffe9 movl $52,_test_event
33: 33 0000E25B # exp_code = FLT_UNDFL_CODE; /* -specificly floating underflow */
34: 34 0000E25B 0d 05 efffffffe2 movl $5,_exp_code
35: 35 0000E262 # if( evt_inst ) /* was the op-code specified? */
36: 36 0000E262 5d efffffffdc tstl _evt_inst
37: 37 0000E268 31 7a jeql L386
38: 38 0000E26A # {
39: 39 0000E26A # inst_index = get_ovfl_index( evt_inst );
40: 40 0000E26A dd efffffffd4 pushl _evt_inst
41: 41 0000E270 fe 08 efffffffcd callf $8,_get_ovfl_index
42: 42 0000E277 0d 50 efffffffc6 movl r0,_inst_index
43: 43 0000E27E # if( (inst_index < 0) ||
44: 44 0000E27E # (ovfl_tbl[inst_index].undfl_data == null_data) )
45: 45 0000E27E 5d efffffffc0 tstl _inst_index
46: 46 0000E284 91 18 jlss L9999
47: 47 0000E286 0d efffffffb8 50 movl _inst_index,r0
48: 48 0000E28D 48 05 50 50 shll $5,r0,r0
49: 49 0000E291 1d e000000018 8f00000000 cmpl _ovfl_tbl+24(r0),$_null_data
50: 50 0000E29C 21 3d jneq L388
51: 51 0000E29E L9999:
52: 52 0000E29E # {
53: 53 0000E29E # if( (prt_hdrs) && (cycle == 1) )
54: 54 0000E29E 5d efffffffa0 tstl _prt_hdrs
55: 55 0000E2A4 31 33 jeql L389
56: 56 0000E2A6 1d efffffff98 01 cmpl _cycle,$1
57: 57 0000E2AD 21 2a jneq L389
58: 58 0000E2AF # {
59: 59 0000E2AF # writes(
60: 60 0000E2AF # "There are no UNDERFLOW faults with op-code ");
61: 61 0000E2AF .data 1
62: 62 000001f6 * L391:
63: 63 000001f6 * 546865726520617265206E6F2 .ascii "There are no UNDERFLOW faults with op-code \0"
64: 0554E444552464C4F57206661
65: 756C74732077697468206F702
66: D636F64652000
67: 64 00000222 * .text
68: 65 0000E2AF dd 8f000001f6 pushl $L391
69: 66 0000E2B5 fe 08 efffffff88 callf $8,_writes
70: 67 0000E2BC # writeh( evt_inst ); /* print the ersatz op-code */
71: 68 0000E2BC dd efffffff82 pushl _evt_inst
72: 69 0000E2C2 fe 08 efffffff7b callf $8,_writeh
73: 70 0000E2C9 # writec('\n');
74: 71 0000E2C9 dd 0a pushl $10
75: 72 0000E2CB fe 08 efffffff72 callf $8,_writec
76: 73 0000E2D2 # error = TRUE; /* needed for line feeds */
77: 74 0000E2D2 0d 01 efffffff6b movl $1,_error
78: 75 0000E2D9 # }
79: 76 0000E2D9 # } else
80: 77 0000E2D9 L389:
81: 78 0000E2D9 11 07 jbr L394
82: 79 0000E2DB L388:
83: 80 0000E2DB # test_undfl_inst(); /* test the instruction */
84: 81 0000E2DB fe 04 ef0000004c callf $4,_test_undfl_inst
85: 82 0000E2E2 L394:
86: 83 0000E2E2 # } else /* test all applicable op-codes */
87: 84 0000E2E2 11 45 jbr L396
88: 85 0000E2E4 L386:
89: 86 0000E2E4 # for(inst_index=0; inst_index < size_ovfl_tbl; inst_index++)
90: 87 0000E2E4 4d efffffff5a clrl _inst_index
91: 88 0000E2EA L399:
92: 89 0000E2EA 1d efffffff54 efffffff4f cmpl _inst_index,_size_ovfl_tbl
93: 90 0000E2F5 81 32 jgeq L398
94: 91 0000E2F7 # {
95: 92 0000E2F7 # data_ptr = ovfl_tbl[ inst_index ].undfl_data;
96: 93 0000E2F7 0d efffffff47 50 movl _inst_index,r0
97: 94 0000E2FE 48 05 50 50 shll $5,r0,r0
98: 95 0000E302 0d e000000018 efffffff37 movl _ovfl_tbl+24(r0),_data_ptr
99: 96 0000E30D # if( data_ptr != null_data )
100: 97 0000E30D 1d efffffff31 8f00000000 cmpl _data_ptr,$_null_data
101: 98 0000E318 31 07 jeql L400
102: 99 0000E31A # test_undfl_inst(); /* test the instruction */
103: 100 0000E31A fe 04 ef0000000d callf $4,_test_undfl_inst
104: 101 0000E321 # }
105: 102 0000E321 L400:
106: 103 0000E321 L397:
107: 104 0000E321 6d efffffff1d incl _inst_index
108: 105 0000E327 11 c1 jbr L399
109: 106 0000E329 L398:
110: 107 0000E329 L396:
111: 108 0000E329 # }
112: 109 0000E329 40 ret#2
113: 110 0000E32A .set L381,0x0
114: 111 0000E32A L383:
115: 112 0000E32A 13 ff1c jbr L384
116: 113 0000E32D .data
117: 114 000001ec * .text
118: 115 0000E32D 00 .align 1
119: 116 0000E32E .globl _test_undfl_inst
120: 117 0000E32E _test_undfl_inst:
121: 118 0000E32E 0000 .word L401
122: 119 0000E330 #
123: 120 0000E330 #
124: 121 0000E330 #
125: 122 0000E330 # /*
126: 123 0000E330 # ********************************************************************
127: 124 0000E330 # *
128: 125 0000E330 # * TEST THE UNDERFLOW EVENT ON AN INSTRUCTION
129: 126 0000E330 # *
130: 127 0000E330 # ********************************************************************
131: 128 0000E330 # */
132: 129 0000E330 # test_undfl_inst()
133: 130 0000E330 # {
134: 131 0000E330 13 00f9 jbr L403
135: 132 0000E333 L404:
136: 133 0000E333 # valid_test = TRUE; /* a test is being run */
137: 134 0000E333 0d 01 efffffff0a movl $1,_valid_test
138: 135 0000E33A # op_code = ovfl_tbl[ inst_index ].inst_code;
139: 136 0000E33A 0d efffffff04 50 movl _inst_index,r0
140: 137 0000E341 48 05 50 50 shll $5,r0,r0
141: 138 0000E345 0d e000000000 effffffef4 movl _ovfl_tbl(r0),_op_code
142: 139 0000E350 # op_name = ovfl_tbl[ inst_index ].name;
143: 140 0000E350 0d effffffeee 50 movl _inst_index,r0
144: 141 0000E357 48 05 50 50 shll $5,r0,r0
145: 142 0000E35B 0d e000000004 effffffede movl _ovfl_tbl+4(r0),_op_name
146: 143 0000E366 # no_ops = ovfl_tbl[ inst_index ].no_operands;
147: 144 0000E366 0d effffffed8 50 movl _inst_index,r0
148: 145 0000E36D 48 05 50 50 shll $5,r0,r0
149: 146 0000E371 0d e000000008 effffffec8 movl _ovfl_tbl+8(r0),_no_ops
150: 147 0000E37C # precision = ovfl_tbl[ inst_index ].precision;
151: 148 0000E37C 0d effffffec2 50 movl _inst_index,r0
152: 149 0000E383 48 05 50 50 shll $5,r0,r0
153: 150 0000E387 0d e00000000c effffffeb2 movl _ovfl_tbl+12(r0),_precision
154: 151 0000E392 # data_ptr = ovfl_tbl[ inst_index ].undfl_data;
155: 152 0000E392 0d effffffeac 50 movl _inst_index,r0
156: 153 0000E399 48 05 50 50 shll $5,r0,r0
157: 154 0000E39D 0d e000000018 effffffe9c movl _ovfl_tbl+24(r0),_data_ptr
158: 155 0000E3A8 # max_index = *ovfl_tbl[ inst_index ].undfl_cnt;
159: 156 0000E3A8 0d effffffe96 50 movl _inst_index,r0
160: 157 0000E3AF 48 05 50 50 shll $5,r0,r0
161: 158 0000E3B3 0d f00000001c effffffe86 movl *_ovfl_tbl+28(r0),_max_index
162: 159 0000E3BE # if( precision == SGL ) {
163: 160 0000E3BE 1d effffffe80 01 cmpl _precision,$1
164: 161 0000E3C5 21 10 jneq L405
165: 162 0000E3C7 # sgl_op = TRUE;
166: 163 0000E3C7 0d 01 effffffe76 movl $1,_sgl_op
167: 164 0000E3CE # acc_ld_size = SGL; /* use a sgl precision Acc. */
168: 165 0000E3CE 0d 01 effffffe6f movl $1,_acc_ld_size
169: 166 0000E3D5 # } else {
170: 167 0000E3D5 11 0d jbr L406
171: 168 0000E3D7 L405:
172: 169 0000E3D7 # sgl_op = FALSE;
173: 170 0000E3D7 4d effffffe67 clrl _sgl_op
174: 171 0000E3DD # acc_ld_size = DBL; /* use a dbl precision Acc. */
175: 172 0000E3DD 0d 02 effffffe60 movl $2,_acc_ld_size
176: 173 0000E3E4 # }
177: 174 0000E3E4 L406:
178: 175 0000E3E4 # if( (prt_hdrs) && (cycle == 1) )
179: 176 0000E3E4 5d effffffe5a tstl _prt_hdrs
180: 177 0000E3EA 31 16 jeql L407
181: 178 0000E3EC 1d effffffe52 01 cmpl _cycle,$1
182: 179 0000E3F3 21 0d jneq L407
183: 180 0000E3F5 # writes( op_name );
184: 181 0000E3F5 dd effffffe49 pushl _op_name
185: 182 0000E3FB fe 08 effffffe42 callf $8,_writes
186: 183 0000E402 # disable_mask = 0; /* all events enabled */
187: 184 0000E402 L407:
188: 185 0000E402 4b effffffe3c clrw _disable_mask
189: 186 0000E408 # evt_disabled = FALSE;
190: 187 0000E408 4d effffffe36 clrl _evt_disabled
191: 188 0000E40E # test_inst(); /* test the instruction */
192: 189 0000E40E fe 04 effffffe2f callf $4,_test_inst
193: 190 0000E415 # disable_mask = PSL_EN_UNDFL; /* disable underflows */
194: 191 0000E415 7f 8840 effffffe27 cvtlw $64,_disable_mask
195: 192 0000E41D # evt_disabled = TRUE;
196: 193 0000E41D 0d 01 effffffe20 movl $1,_evt_disabled
197: 194 0000E424 # test_inst(); /* test the instruction */
198: 195 0000E424 fe 04 effffffe19 callf $4,_test_inst
199: 196 0000E42B # }
200: 197 0000E42B 40 ret#2
201: 198 0000E42C .set L401,0x0
202: 199 0000E42C L403:
203: 200 0000E42C 13 ff04 jbr L404
204: 201 0000E42F .data
205: 201 0001C673 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.