|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 000001e0 * .text
4 00000000 .align 1
5 00000000 .globl _fpm_test
6 00000000 _fpm_test:
7 0000E430 0000 .word L381
8 0000E432 #
9 0000E432 # #include "evt_defs.h"
10 0000E432 #
11 0000E432 # /*
12 0000E432 # ********************************************************************
13 0000E432 # *
14 0000E432 # * MONITOR FOR THE FPP EMULATION TRAP INTERFACE TEST
15 0000E432 # *
16 0000E432 # ********************************************************************
17 0000E432 # */
18 0000E432 # fpm_test()
19 0000E432 # {
20 0000E432 13 00ab jbr L383
21 0000E435 L384:
22 0000E435 # event_msg = "FPP Emulation";
23 0000E435 .data 1
24 000001e0 * L385:
25 000001e0 * 46505020456D756C6174696F6 .ascii "FPP Emulation\0"
E00
26 000001ee * .text
27 0000E435 0d 8f000001e0 effffffff0 movl $L385,_event_msg
28 0000E440 # test_event = FPM_CODE;
29 0000E440 0d 37 efffffffe9 movl $55,_test_event
30 0000E447 # disable_mask = 0; /* don't disable any events */
31 0000E447 4b efffffffe3 clrw _disable_mask
32 0000E44D # evt_disabled = FALSE; /* expected event is enabled */
33 0000E44D 4d efffffffdd clrl _evt_disabled
34 0000E453 # if( evt_inst ) /* was the op-code specified? */
35 0000E453 5d efffffffd7 tstl _evt_inst
36 0000E459 31 62 jeql L386
37 0000E45B # {
38 0000E45B # inst_index = get_fpm_index( evt_inst );
39 0000E45B dd efffffffcf pushl _evt_inst
40 0000E461 fe 08 ef00000164 callf $8,_get_fpm_index
41 0000E468 0d 50 efffffffc1 movl r0,_inst_index
42 0000E46F # if( inst_index < 0 ) {
43 0000E46F 5d efffffffbb tstl _inst_index
44 0000E475 81 3d jgeq L388
45 0000E477 # if( (prt_hdrs) && (cycle == 1) ) /* no reserved ops */
46 0000E477 5d efffffffb3 tstl _prt_hdrs
47 0000E47D 31 33 jeql L389
48 0000E47F 1d efffffffab 01 cmpl _cycle,$1
49 0000E486 21 2a jneq L389
50 0000E488 # {
51 0000E488 # writes(
52 0000E488 # "There is no FLOATING POINT EMULATION with op-code" );
53 0000E488 .data 1
54 000001ee * L391:
55 000001ee * 5468657265206973206E6F204 .ascii "There is no FLOATING POINT EMULATION with op-code\0"
64C4F4154494E4720504F494E
5420454D554C4154494F4E207
7697468206F702D636F646500
56 00000220 * .text
57 0000E488 dd 8f000001ee pushl $L391
58 0000E48E fe 08 efffffff9b callf $8,_writes
59 0000E495 # writeh( evt_inst ); /* print the ersatz op-code */
60 0000E495 dd efffffff95 pushl _evt_inst
61 0000E49B fe 08 efffffff8e callf $8,_writeh
62 0000E4A2 # writec('\n');
63 0000E4A2 dd 0a pushl $10
64 0000E4A4 fe 08 efffffff85 callf $8,_writec
65 0000E4AB # error = TRUE; /* needed for line feed control */
66 0000E4AB 0d 01 efffffff7e movl $1,_error
67 0000E4B2 # }
68 0000E4B2 # } else
69 0000E4B2 L389:
70 0000E4B2 11 07 jbr L394
71 0000E4B4 L388:
72 0000E4B4 # test_fpm_inst(); /* test the instruction */
73 0000E4B4 fe 04 ef00000029 callf $4,_test_fpm_inst
74 0000E4BB L394:
75 0000E4BB # } else /* test all applicable op-codes */
76 0000E4BB 11 22 jbr L396
77 0000E4BD L386:
78 0000E4BD # for(inst_index=0; inst_index < size_fpm_tbl; inst_index++)
79 0000E4BD 4d efffffff6d clrl _inst_index
80 0000E4C3 L399:
81 0000E4C3 1d efffffff67 efffffff62 cmpl _inst_index,_size_fpm_tbl
82 0000E4CE 81 0f jgeq L398
83 0000E4D0 # test_fpm_inst();
84 0000E4D0 fe 04 ef0000000d callf $4,_test_fpm_inst
85 0000E4D7 L397:
86 0000E4D7 6d efffffff53 incl _inst_index
87 0000E4DD 11 e4 jbr L399
88 0000E4DF L398:
89 0000E4DF L396:
90 0000E4DF # }
91 0000E4DF 40 ret#2
92 0000E4E0 .set L381,0x0
93 0000E4E0 L383:
94 0000E4E0 13 ff52 jbr L384
95 0000E4E3 .data
96 000001e0 * .text
97 0000E4E3 00 .align 1
98 0000E4E4 .globl _test_fpm_inst
99 0000E4E4 _test_fpm_inst:
100 0000E4E4 0000 .word L400
101 0000E4E6 #
102 0000E4E6 #
103 0000E4E6 #
104 0000E4E6 # /*
105 0000E4E6 # ***************************************************************************
106 0000E4E6 # *
107 0000E4E6 # * Run the Reserved Operand Fault on one instruction
108 0000E4E6 # *
109 0000E4E6 # ***************************************************************************
110 0000E4E6 # */
111 0000E4E6 # test_fpm_inst()
112 0000E4E6 # {
113 0000E4E6 13 00df jbr L402
114 0000E4E9 L403:
115 0000E4E9 # valid_test = TRUE; /* a test is being run */
116 0000E4E9 0d 01 efffffff40 movl $1,_valid_test
117 0000E4F0 # op_code = fpm_tbl[ inst_index ].inst_code;
118 0000E4F0 0d efffffff3a 50 movl _inst_index,r0
119 0000E4F7 48 04 50 50 shll $4,r0,r0
120 0000E4FB 0d e000000000 efffffff2a movl _fpm_tbl(r0),_op_code
121 0000E506 # op_name = fpm_tbl[ inst_index ].name;
122 0000E506 0d efffffff24 50 movl _inst_index,r0
123 0000E50D 48 04 50 50 shll $4,r0,r0
124 0000E511 0d e000000004 efffffff14 movl _fpm_tbl+4(r0),_op_name
125 0000E51C # precision = fpm_tbl[ inst_index ].precision;
126 0000E51C 0d efffffff0e 50 movl _inst_index,r0
127 0000E523 48 04 50 50 shll $4,r0,r0
128 0000E527 0d e00000000c effffffefe movl _fpm_tbl+12(r0),_precision
129 0000E532 # no_ops = fpm_tbl[ inst_index ].no_operands;
130 0000E532 0d effffffef8 50 movl _inst_index,r0
131 0000E539 48 04 50 50 shll $4,r0,r0
132 0000E53D 0d e000000008 effffffee8 movl _fpm_tbl+8(r0),_no_ops
133 0000E548 # data_ptr = fpm_data;
134 0000E548 0d 8f00000000 effffffedd movl $_fpm_data,_data_ptr
135 0000E553 # max_index = fpm_data_cnt;
136 0000E553 0d effffffed7 effffffed2 movl _fpm_data_cnt,_max_index
137 0000E55E # if( precision == SGL ) {
138 0000E55E 1d effffffecc 01 cmpl _precision,$1
139 0000E565 21 10 jneq L404
140 0000E567 # sgl_op = TRUE;
141 0000E567 0d 01 effffffec2 movl $1,_sgl_op
142 0000E56E # acc_ld_size = SGL; /* use a sgl precision Acc. */
143 0000E56E 0d 01 effffffebb movl $1,_acc_ld_size
144 0000E575 # } else {
145 0000E575 11 0d jbr L405
146 0000E577 L404:
147 0000E577 # sgl_op = FALSE;
148 0000E577 4d effffffeb3 clrl _sgl_op
149 0000E57D # acc_ld_size = DBL; /* use a dbl precision Acc. */
150 0000E57D 0d 02 effffffeac movl $2,_acc_ld_size
151 0000E584 # }
152 0000E584 L405:
153 0000E584 # if( (prt_hdrs) && (cycle == 1) ) {
154 0000E584 5d effffffea6 tstl _prt_hdrs
155 0000E58A 31 34 jeql L406
156 0000E58C 1d effffffe9e 01 cmpl _cycle,$1
157 0000E593 21 2b jneq L406
158 0000E595 # if( (!evt_inst) && /* print a line feed if */
159 0000E595 # (op_code == LOGF_OP_CODE) ) /* the 1st line is full */
160 0000E595 5d effffffe95 tstl _evt_inst
161 0000E59B 21 16 jneq L407
162 0000E59D 1d effffffe8d 35 cmpl _op_code,$53
163 0000E5A4 21 0d jneq L407
164 0000E5A6 # writes("\n ");
165 0000E5A6 .data 1
166 00000220 * L408:
167 00000220 * 0A20202020202020202020202 .ascii "\12 \0"
0202020202020202020202000
168 00000239 * .text
169 0000E5A6 dd 8f00000220 pushl $L408
170 0000E5AC fe 08 effffffe7d callf $8,_writes
171 0000E5B3 # writes( op_name ); /* print the instruction's name */
172 0000E5B3 L407:
173 0000E5B3 dd effffffe77 pushl _op_name
174 0000E5B9 fe 08 effffffe70 callf $8,_writes
175 0000E5C0 # }
176 0000E5C0 # test_inst();
177 0000E5C0 L406:
178 0000E5C0 fe 04 effffffe69 callf $4,_test_inst
179 0000E5C7 # }
180 0000E5C7 40 ret#2
181 0000E5C8 .set L400,0x0
182 0000E5C8 L402:
183 0000E5C8 13 ff1e jbr L403
184 0000E5CB .data
185 000001e0 * .text
186 0000E5CB 00 .align 1
187 0000E5CC .globl _get_fpm_index
188 0000E5CC _get_fpm_index:
189 0000E5CC 0000 .word L410
190 0000E5CE #
191 0000E5CE #
192 0000E5CE #
193 0000E5CE # /*
194 0000E5CE # ***************************************************************************
195 0000E5CE # *
196 0000E5CE # * GET THE INSTRUCTION TABLE INDEX FOR AN OP-CODE
197 0000E5CE # *
198 0000E5CE # * Given the op_code of an instruction, return the instruction's index in
199 0000E5CE # * the FPM instruction table. Return a negative number if the op-code isn't
200 0000E5CE # * in the table.
201 0000E5CE # *
202 0000E5CE # **************************************************************************
203 0000E5CE # */
204 0000E5CE # get_fpm_index( op_code )
205 0000E5CE # {
206 0000E5CE 11 38 jbr L412
207 0000E5D0 L413:
208 0000E5D0 # int x;
209 0000E5D0 # x = 0;
210 0000E5D0 4d adc8 clrl -56(fp)
211 0000E5D3 # while( (fpm_tbl[x].inst_code != op_code) && (x < size_fpm_tbl) )
212 0000E5D3 L414:
213 0000E5D3 0d adc8 50 movl -56(fp),r0
214 0000E5D7 48 04 50 50 shll $4,r0,r0
215 0000E5DB 1d e000000000 ad04 cmpl _fpm_tbl(r0),4(fp)
216 0000E5E3 31 0f jeql L415
217 0000E5E5 1d adc8 effffffe43 cmpl -56(fp),_size_fpm_tbl
218 0000E5ED 81 05 jgeq L415
219 0000E5EF # x++;
220 0000E5EF 6d adc8 incl -56(fp)
221 0000E5F2 11 df jbr L414
222 0000E5F4 L415:
223 0000E5F4 # if( x == size_fpm_tbl )
224 0000E5F4 1d adc8 effffffe34 cmpl -56(fp),_size_fpm_tbl
225 0000E5FC 21 04 jneq L416
226 0000E5FE # x = -1;
227 0000E5FE ec 01 adc8 mnegl $1,-56(fp)
228 0000E602 # return( x );
229 0000E602 L416:
230 0000E602 0d adc8 50 movl -56(fp),r0
231 0000E606 40 ret#1
232 0000E607 # }
233 0000E607 40 ret#1
234 0000E608 .set L410,0x0
235 0000E608 L412:
236 0000E608 3c 38 5d 5e subl3 $56,fp,sp
237 0000E60C 11 c2 jbr L413
238 0000E60E .data
239 000001e0 * #
240 000001e0 * #
240 000001e0 * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.