|
|
Power 6/32 Unix version 1.21
1 00000000
2 00000000 /* privileged registers constants (addresses) */
3 00000000
4 00000000
5 00000000
6 00000000 .set SBR,0 /*system base register */
7 00000000 .set SLR,1 /*system length reg */
8 00000000 .set P0BR,2 /*p0 base reg */
9 00000000 .set P0LR,3 /*p0 length reg */
10 00000000 .set P1BR,4 /*p1 base reg */
11 00000000 .set P1LR,5 /*p1 length reg */
12 00000000 .set P2BR,6 /*p2 base reg */
13 00000000 .set P2LR,7 /*p2 length reg */
14 00000000 .set IPL,8 /*int priority level reg */
15 00000000 .set MME,9 /*memory mgmt enable reg */
16 00000000 .set TBIA,10 /*trans buf invalidate all */
17 00000000 /*entries */
18 00000000 .set TBIS,11 /*trans buf invalidate single */
19 00000000 /*entry */
20 00000000 .set DCK,12 /*data cache key */
21 00000000 .set CCK,13 /*code cache key */
22 00000000 .set PCBB,14 /*process control block base */
23 00000000 .set ISP,15 /*interrupt stack pointer */
24 00000000 .set SIRR,16 /*software int request reg */
25 00000000 .set SISR,17 /*software int summary reg */
26 00000000 .set SCBB,18 /*system control block base reg */
27 00000000 .set KSP,19 /*kernel stack pointer reg */
28 00000000 .set USP,20 /*user stack pointer */
29 00000000 .set DCB,21 /*CPU2 DCB */
30 00000000 .set PACC,23 /*purge (invalidate) all pages */
31 00000000 /*of process in code cache */
32 00000000 .set P1DC,24 /*purge one page of data cache */
33 00000000 .set PADC,25 /*purge all the pages of */
34 00000000 /*process in data cache */
35 00000000 .set HISR,26 /* Hardware interrupt summary reg */
36 00000000 .set DCR,27 /* Diagnostic control register */
37 00000000 .set PDCS,28 /* Purge 1 data cache slot */
38 00000000
39 00000000 #
40 00000000 #TAHOE program status longword
41 00000000 #
42 00000000
43 00000000 .set PSL_C,0x00000001 /* carry bit */
44 00000000 .set PSL_V,0x00000002 /* overflow bit */
45 00000000 .set PSL_Z,0x00000004 /* zero bit */
46 00000000 .set Z,0x00000004
47 00000000 .set PSL_N,0x00000008 /* negative bit */
48 00000000 .set PSL_T,0x00000010 /* trace enable bit */
49 00000000 .set PSL_I,0x00000020 /* integer overflow enable bit */
50 00000000 .set PSL_EN_OVFL,0x20 /* integer overflow enable bit */
51 00000000 .set PSL_EN_UNDFL,0x40 /* floating underflow enable */
52 00000000 .set PSL_DBL,0x80 /* dbl precision Accumulator bit */
53 00000000 .set PSL_IPL,0x001f0000 /* interrupt priority level */
54 00000000 .set PSL_MOD,0x01000000 /* mode = 1 means user */
55 00000000 .set PSL_IS,0x04000000 /* interrupt stack */
56 00000000 .set PSL_TP,0x40000000 /* trace pending */
57 00000000
58 00000000 #
59 00000000 # TAHOE page table entry
60 00000000 #/
61 00000000 .set PG_V,0x8000000
62 00000000 .set PG_PROT,0x78000000
63 00000000 .set PG_M,0x04000000
64 00000000 .set PG_USED,0x02000000
65 00000000 .set PG_NC,0x01000000
66 00000000 .set PG_PFNUM,0x003fffff
67 00000000
68 00000000 .set PG_NOACC,0
69 00000000 .set PG_KR,0x40000000
70 00000000 .set PG_KW,0x60000000
71 00000000 .set PG_URKR,0x50000000
72 00000000 .set PG_URKW,0x70000000
73 00000000 .set PG_UW,0x78000000
74 00000000
75 00000000 #* PCB offsets & diagnostic extension to pcb */
76 00000000 #* PCB is at pcb0 */
77 00000000
78 00000000
79 00000000 .set PCB_SIZE, 24
80 00000000 .set PCB_KSP, 0
81 00000000 .set PCB_USP, 4
82 00000000 .set PCB_R0, 8
83 00000000 .set PCB_R1, 12
84 00000000 .set PCB_R2, 16
85 00000000 .set PCB_R3, 20
86 00000000 .set PCB_R4, 24
87 00000000 .set PCB_R5, 28
88 00000000 .set PCB_R6, 32
89 00000000 .set PCB_R7, 36
90 00000000 .set PCB_R8, 40
91 00000000 .set PCB_R9, 44
92 00000000 .set PCB_R10, 48
93 00000000 .set PCB_R11, 52
94 00000000 .set PCB_R12, 56
95 00000000 .set PCB_R13, 60
96 00000000 .set PCB_PC, 64
97 00000000 .set PCB_PSL, 68
98 00000000 .set PCB_P0BR, 72
99 00000000 .set PCB_P0LR, 76
100 00000000 .set PCB_P1BR, 80
101 00000000 .set PCB_P1LR, 84
102 00000000 .set PCB_P2BR, 88
103 00000000 .set PCB_P2LR, 92
104 00000000 .set PCB_ACCM, 96
105 00000000 .set PCB_ACCL, 100
106 00000000 #*
107 00000000 # Diagnostic pcb extension
108 00000000 #/
109 00000000 .set PCB_STAT, 104 /*process status,statistics,id,etc*/
110 00000000
111 00000000
112 00000000
113 00000000 #* fundamental constants */
114 00000000
115 00000000 #*
116 00000000 # fundamental constants of the implementation--
117 00000000 # cannot be changed easily.
118 00000000 #/
119 00000000
120 00000000 .set NBPG,1024
121 00000000 .set PGOFSET,(NBPG-1) /* byte offset into page */
122 00000000 .set PGSHIFT,10 /* LOG2(NBPG) */
123 00000000 .set HIGH,0x1f
124 00000000
125 00000000
126 00000000 #* SCB offsets */
127 00000000 #* SCB is at scb */
128 00000000
129 00000000 .set PFVEC,1*4 /*power fail */
130 00000000 .set PRVEC,2*4 /*power restore */
131 00000000 .set CLOCKVEC,7*4 /*hard clock vector */
132 00000000 .set CRVEC,0xa*4 /*console receive */
133 00000000 .set CXVEC,44 /*console transmit */
134 00000000 .set SIVEC1,0x1e*4 /*software int vec #1 */
135 00000000 /*for 2,3,..15, sub 4,8,.. 56 */
136 00000000 /*from SIVEC1 */
137 00000000 .set BEVEC,0x20*4 /*bus error */
138 00000000 .set SYSVEC,0x2b*4 /*system call (kcall) */
139 00000000 .set PINSTVEC,0x2c*4 /*privileged instruction fault */
140 00000000 .set PRIVSVEC,0x2c*4 /*privileged instruction fault */
141 00000000 .set ROVEC,0x2d*4 /*reserved operand fault */
142 00000000 .set RAVEC,0x2e*4 /*reserved addressing fault */
143 00000000 .set PROTVEC,0x2f*4 /*access control violation */
144 00000000 .set TRANS,0x30 /*translation fault vector */
145 00000000 .set TRANSVEC,0x30*4 /*translation fault vector */
146 00000000 .set KSPVEC,0x31*4 /*kernel stack not valid vector */
147 00000000 .set TRACEVEC,0x32*4 /*trace vector */
148 00000000 .set BPTVEC,0x33*4 /*break point fault */
149 00000000 .set ARITHVEC,0x34*4 /*arithmetic trap */
150 00000000 .set ALIGNVEC,0x35*4 /*alignment vector */
151 00000000 .set FPMVEC,0x37*4 /*fpp emulation vector */
152 00000000 .set IO14VEC,256 /*io vector, ipl #14 */
153 00000000 .set IO15VEC,320 /*io vector, ipl #15 */
154 00000000 .set IO16VEC,384 /*io vector, ipl #16 */
155 00000000 .set IO17VEC,448 /*io vector, ipl #17 */
156 00000000
157 00000000 #* SPT (system page table) offsets */
158 00000000 #* SPT is at Sysmap */
159 00000000
160 00000000 .set SCBPTE,8 /*system control block pte offset*/
161 00000000 .set BUFPTE,12 /*buffer pte offset */
162 00000000 .set ISPTE,16 /*interrupt stack page 0 */
163 00000000 .set IS1PTE,20 /*interrupt stack page 1 */
164 00000000 .set SPTPTE,20 /*system page table page 1 */
165 00000000 .set SPT1PTE,20 /*system page table page 2 */
166 00000000 .set IOMAPPTE,24 /*io map */
167 00000000 .set PCBPTE,28 /*process control blocks pte */
168 00000000 .set U0P0PTE,32 /*U0 p0pt pte */
169 00000000 .set U0P1PTE,36 /*U0 p1pt pte */
170 00000000 .set U0P2PTE,40 /*U0 p2pt pte */
171 00000000 .set U1P0PTE,44
172 00000000 .set U1P1PTE,48
173 00000000 .set U1P2PTE,52
174 00000000 .set U2P0PTE,56
175 00000000 .set U2P1PTE,60
176 00000000 .set U2P2PTE,64
177 00000000 .set U3P0PTE,68
178 00000000 .set U3P1PTE,72
179 00000000 .set U3P2PTE,76
180 00000000 .set U4P0PTE,80
181 00000000 .set U4P1PTE,84
182 00000000 .set U4P2PTE,88
183 00000000 .set U5P0PTE,92
184 00000000 .set U5P1PTE,96
185 00000000 .set U5P2PTE,100
186 00000000 .set U6P0PTE,104
187 00000000 .set U6P1PTE,108
188 00000000 .set U6P2PTE,112
189 00000000 .set U7P0PTE,116 /*U7 p0pt pte */
190 00000000 .set U7P1PTE,120 /*U7 p1pt pte */
191 00000000 .set U7P2PTE,124 /*U7 p2pt pte */
192 00000000 .set IOB0PTE,128 /*io buffer 0 pte */
193 00000000 .set IOB1PTE,132
194 00000000 .set IOB2PTE,136
195 00000000 .set IOB3PTE,140
196 00000000 .set IOB4PTE,144
197 00000000 .set IOB5PTE,148
198 00000000 .set IOB6PTE,152
199 00000000 .set IOB7PTE,156 /*io buffer 7 pte */
200 00000000
201 00000000
202 00000000 #* trap.h 4.6 81/03/03 */
203 00000000
204 00000000 #*
205 00000000 #* Trap type values
206 00000000 #/
207 00000000
208 00000000 .set RESADFLT,0 /* reserved addressing fault */
209 00000000 .set PRIVINFLT,1 /* privileged instruction fault */
210 00000000 .set RESOPFLT,2 /* reserved operand fault */
211 00000000 .set BPTFLT,3 /* bpt instruction fault */
212 00000000 .set ALIGNFLT,4 /* alignment fault */
213 00000000 .set SYSCALL,5 /* kcall instruction (syscall trap) */
214 00000000 .set ARITHTRAP,6 /* arithmetic trap */
215 00000000 .set PROTFLT,7 /* protection fault */
216 00000000 .set TRCTRAP,8 /* trace trap */
217 00000000 .set TRANSFLT,9 /* translation not valid fault */
218 00000000 .set DONE,255
219 00000000
220 00000000 #
221 00000000 # Event codes
222 00000000 #
223 00000000 .set RTCLOCK_CODE,7 /* real time clock event */
224 00000000 .set RESOP_CODE,0x2d /* reserved operand fault */
225 00000000 .set RESAD_CODE,0x2e /* reserved address fault */
226 00000000 .set ARITH_CODE,0x34 /* arithmetic fault */
227 00000000 .set FPM_CODE,0x37 /* fpp emulation trap */
228 00000000 .set INTEGER_OVERFLOW,1 /* code for arith. fault */
229 00000000
230 00000000 #
231 00000000 # Arithmetic Event types
232 00000000 #
233 00000000 .set INT_OVFL_CODE,1 /* integer overflow */
234 00000000 .set INT_0_DIV_CODE,2 /* integer divide by 0 */
235 00000000 .set FLT_0_DIV_CODE,3 /* floating divide by 0 */
236 00000000 .set FLT_OVFL_CODE,4 /* floating overflow */
237 00000000 .set FLT_UNDFL_CODE,5 /* floating underflow */
238 00000000
239 00000000 #
240 00000000 # Floating Point Instruction Op-Codes
241 00000000 #
242 00000000 .set LDF_OP_CODE,0x06 /* sgl load acc. instr */
243 00000000 .set LDD_OP_CODE,0x07 /* dbl load acc. instr */
244 00000000 .set LNF_OP_CODE,0x16 /* sgl load-neg acc. instr */
245 00000000 .set LND_OP_CODE,0x17 /* dbl load-neg acc. instr */
246 00000000 .set STF_OP_CODE,0x26 /* sgl store acc. instr */
247 00000000 .set STD_OP_CODE,0x27 /* dbl store acc. instr */
248 00000000 .set CMPF_OP_CODE,0x36 /* sgl compare instr */
249 00000000 .set CMPD_OP_CODE,0x37 /* dbl compare instr */
250 00000000 .set CMPF2_OP_CODE,0x46 /* sgl compare 2 instr */
251 00000000 .set CMPD2_OP_CODE,0x47 /* dbl compare 2 instr */
252 00000000 .set TSTF_OP_CODE,0x56 /* sgl test acc. instr */
253 00000000 .set TSTD_OP_CODE,0x57 /* dbl test acc. instr */
254 00000000 .set PUSHD_OP_CODE,0x67 /* dbl push acc. instr */
255 00000000 .set CVLF_OP_CODE,0x76 /* convert int to sgl instr */
256 00000000 .set CVLD_OP_CODE,0x77 /* convert int to dbl instr */
257 00000000 .set CVFL_OP_CODE,0x86 /* convert sgl to int instr */
258 00000000 .set CVDL_OP_CODE,0x87 /* convert dbl to int instr */
259 00000000 .set LDFD_OP_CODE,0x97 /* load sgl to dbl instr */
260 00000000 .set CVDF_OP_CODE,0xa6 /* convert dbl to sgl instr */
261 00000000 .set NEGF_OP_CODE,0xb6 /* negate sgl acc. instr */
262 00000000 .set NEGD_OP_CODE,0xb7 /* negate dbl acc. instr */
263 00000000 .set ADDF_OP_CODE,0xc6 /* sgl add instr */
264 00000000 .set ADDD_OP_CODE,0xc7 /* dbl add instr */
265 00000000 .set SUBF_OP_CODE,0xd6 /* sgl subtract instr */
266 00000000 .set SUBD_OP_CODE,0xd7 /* dbl subtract instr */
267 00000000 .set MULF_OP_CODE,0xe6 /* sgl multiply instr */
268 00000000 .set MULD_OP_CODE,0xe7 /* dbl multiply instr */
269 00000000 .set DIVF_OP_CODE,0xf6 /* sgl divide instr */
270 00000000 .set DIVD_OP_CODE,0xf7 /* dbl divide instr */
271 00000000 .set SINF_OP_CODE,0x05 /* sgl sine instr */
272 00000000 .set COSF_OP_CODE,0x15 /* sgl cosine instr */
273 00000000 .set ATANF_OP_CODE,0x25 /* sgl arc-tangent instr */
274 00000000 .set LOGF_OP_CODE,0x35 /* sgl natural log instr */
275 00000000 .set SQRTF_OP_CODE,0x45 /* sgl square root instr */
276 00000000 .set EXPF_OP_CODE,0x55 /* sgl "e to the x" instr */
277 00000000 .set MULL2_OP_CODE,0x4c /* integer multiply - 2 ops */
278 00000000 .set MULL3_OP_CODE,0x5c /* integer multiply - 3 ops */
279 00000000
280 00000000
281 00000000 #
282 00000000 # Addressing test constants - These must agree with "fpp_defs.h"
283 00000000 #
284 00000000 .set ADR_ABSOLUTE,1 /* absolute address */
285 00000000 .set ADR_LITERAL,2 /* literal -short immediate byte */
286 00000000 .set ADR_IM_B,3 /* immediate byte */
287 00000000 .set ADR_IM_W,4 /* immediate word */
288 00000000 .set ADR_IM_L,5 /* immediate long-word */
289 00000000 .set ADR_B_DSP,6 /* byte displ relative */
290 00000000 .set ADR_W_DSP,7 /* word displ relative */
291 00000000 .set ADR_L_DSP,8 /* long-word displ relative */
292 00000000 .set ADR_B_DSP_DEF,9 /* byte displ relative deferred */
293 00000000 .set ADR_W_DSP_DEF,10 /* word displ relative deferred */
294 00000000 .set ADR_L_DSP_DEF,11 /* L-word displ relative deferred */
295 00000000 .set ADR_REG,12 /* direct register */
296 00000000 .set ADR_REG_DEF,13 /* register deferred */
297 00000000 .set ADR_FP_DEF,14 /* FP deferred */
298 00000000 .set ADR_SP_DEF,15 /* SP deferred */
299 00000000 .set ADR_PUSH,16 /* auto-decrement SP */
300 00000000 .set ADR_POP,17 /* auto-increment SP */
301 00000000 .set ADR_POP_DEF,18 /* auto-increment SP deferred */
302 00000000 .set ADR_REG_B,19 /* register + byte displ */
303 00000000 .set ADR_REG_W,20 /* register + word displ */
304 00000000 .set ADR_REG_L,21 /* register + long-word displ */
305 00000000 .set ADR_REG_B_DEF,22 /* register + byte displ deferred */
306 00000000 .set ADR_REG_W_DEF,23 /* register + word displ deferred */
307 00000000 .set ADR_REG_L_DEF,24 /* register + L-word displ deferred */
308 00000000 .set ADR_I_FP_DEF,25 /* indexed (frame pointer deferred) */
309 00000000 .set ADR_I_L,26 /* indexed (longword displacement) */
310 00000000
311 00000000
312 00000000 #*************************************************************************
313 00000000 #
314 00000000 # Stuff for the Demand Paging , Events, & Addressing Tests
315 00000000 #
316 00000000 #************************************************************************/
317 00000000 .set SGL,1 /* sgl precision data */
318 00000000 .set DBL,2 /* dbl precision data */
319 00000000 .set ENABLE_EVENTS,0x60 /* enable ovfl & undfl events */
320 00000000 .set NONE,0 /* no operand flag */
321 00000000 .set LOAD,1 /* read-the-operand flag */
322 00000000 .set STORE,2 /* store-the-operand flag */
323 00000000
324 00000000 .set NO_EVT_HLT,1 /* halt code: did not Get event */
325 00000000 .set EVT_MSK_HLT,2 /* halt code: got masked event */
326 00000000 .set BAD_PSL_HLT,3 /* halt code: wrong PSL value */
327 00000000 .set PUSH_CNT_HLT,4 /* halt code: wrong # ops on stk */
328 00000000 .set PUSH_PSL_HLT,5 /* halt code: bad PSL on stack */
329 00000000 .set PUSH_PC_HLT,6 /* halt code: bad PC on stack */
330 00000000 .set BAD_REG_HLT,7 /* halt code: bad final register */
331 00000000 .set BAD_ACC_HLT,8 /* halt code: bad final Acc. */
332 00000000
333 00000000 #
334 00000000 # set DMP_PG_0 to the 1st empty page
335 00000000 #
336 00000000 .set DMP_PG_0,0x36000
337 00000000 .set DMP_PG_1,DMP_PG_0+0x400
338 00000000 .set DMP_PG_2,DMP_PG_1+0x400
339 00000000 .set DMP_PG_3,DMP_PG_2+0x400
340 00000000 .set DMP_PG_4,DMP_PG_3+0x400
341 00000000 .set DMP_PG_5,DMP_PG_4+0x400
342 00000000 .set DMP_PG_6,DMP_PG_5+0x400
343 00000000 .set DMP_PG_7,DMP_PG_6+0x400
344 00000000 .set DMP_PG_8,DMP_PG_7+0x400
345 00000000 .set DMP_PG_9,DMP_PG_8+0x400
346 00000000 .set DMP_PG_10,DMP_PG_9+0x400
347 00000000 .set DMP_PG_11,DMP_PG_10+0x400
348 00000000 .set DMP_PG_12,DMP_PG_11+0x400
349 00000000 .set DMP_PG_13,DMP_PG_12+0x400
350 00000000
351 00000000 #
352 00000000 # test code space for the address / demand page tests
353 00000000 #
354 00000000 .set START_OF_CODE,DMP_PG_1-20 /* 1st addr of test-code space */
355 00000000 .set CODE_BUF_SIZE,40 /* # bytes in test-code space */
356 00000000 .set END_OF_CODE,START_OF_CODE+CODE_BUF_SIZE
357 00000000
358 00000000 #
359 00000000 # data locations used by the event and demand page tests
360 00000000 #
361 00000000 .set _dmp_byte_op_1,DMP_PG_1+0x30 /* 'byte offset' data */
362 00000000 .set _dmp_byte_op_2,DMP_PG_1+0x50 /* 'byte offset' data */
363 00000000 .set _dmp_byte_op_3,DMP_PG_1+0x70 /* 'byte offset' data */
364 00000000 .set _dmp_op_1,DMP_PG_3-4 /* 1st data word */
365 00000000 .set _dmp_op_1_ptr,DMP_PG_4+0x30 /* ptr to 1st data wd */
366 00000000 .set _dmp_op_2_ptr,DMP_PG_5+0x30 /* ptr to 2nd data wd */
367 00000000 .set _dmp_op_2,DMP_PG_7-4 /* 2nd data word */
368 00000000 .set _dmp_op_3,DMP_PG_8 /* 3rd data word */
369 00000000 .set _dmp_op_3_ptr,DMP_PG_9+0x30 /* ptr to 3rd data wd */
370 00000000 .set _dmp_op_4,DMP_PG_10 /* 4th data (for pipes) */
371 00000000 .set _dmp_op_5,DMP_PG_11 /* 5th data (for pipes) */
372 00000000 .set _sp_minus,DMP_PG_13-4 /* SP for POPs */
373 00000000 .set _sp_page,DMP_PG_13 /* SP page boundary */
374 00000000 .set _sp_plus,DMP_PG_13+4 /* SP for PUSHs */
375 00000000
376 00000000
377 00000000
378 00000000
379 00000000 # ***************************************************************************
380 00000000 # *
381 00000000 # * Test an instruction that has no operands
382 00000000 # *
383 00000000 # * Only the 1 byte instruction and some NOPs will go into the code buffer.
384 00000000 # *
385 00000000 # * 30-May-85 : added pipelined tests
386 00000000 # * 22-Jul-85 : don't run pipeline 2 test w/ emulated instructions
387 00000000 # ***************************************************************************
388 00000000 .text
389 00000000 .align 1
390 00000000 .globl _test_0_ops
391 00000000 _test_0_ops:
392 0000EFA8 0000 .word 0
393 0000EFAA /*
396 0000EFAA 1d 01 effffffff7 * Set the sizes for loading and for storing the accumulator
397 0000EFB1 21 14 */
398 0000EFB3 0d 01 efffffffee cmpl $SGL,_precision
399 0000EFBA 0d 01 efffffffe7 bneq 1f
400 0000EFC1 71 ef00000020 movl $SGL,_acc_ld_size /* set ACC. load size */
401 0000EFC7 movl $SGL,_acc_st_size /* set ACC. store size */
402 0000EFC7 0d 02 efffffffda jmp 2f
403 0000EFCE 0d 02 efffffffd3 1:
404 0000EFD5 1d efffffffcd 8900a6 movl $DBL,_acc_ld_size /* set ACC. load size */
405 0000EFDE 21 07 movl $DBL,_acc_st_size /* set ACC. store size */
406 0000EFE0 0d 01 efffffffc1 cmpl _op_code,$CVDF_OP_CODE /* "cvdf" instruction? */
407 0000EFE7 bneq 2f
408 0000EFE7 fe 04 ef00000018 movl $SGL,_acc_st_size /* store sgl acc. for cvdf */
409 0000EFEE fe 04 ef0000008b 2:
410 0000EFF5 1d efffffffad 37 callf $4,_test_0_no_pipe /* test w/o pipelineing */
411 0000EFFC 31 07 callf $4,_test_0_pipe1 /* test pipeline test #1 */
412 0000EFFE fe 04 ef00000133 cmpl _test_event,$FPM_CODE /* Is this the FPM test? */
413 0000F005 40 beql 1f /* don't run pipe #2 w/ FPM */
414 0000F006 callf $4,_test_0_pipe2 /* test pipeline test #2 */
415 0000F006 1: ret /* return */
416 0000F006
417 0000F006
418 0000F006
419 0000F006
420 0000F006 # ***************************************************************************
421 0000F006 # *
422 0000F006 # * TEST A NO OPERAND INSTRUCTION WITH NO FPP INSTRUCTION IN FRONT OF IT
423 0000F006 # *
424 0000F006 # ***************************************************************************
425 0000F006 .text
426 0000F006 .align 1
427 0000F006 0000 .globl _test_0_no_pipe
428 0000F008 4d efffffff9a _test_0_no_pipe:
429 0000F00E fe 04 efffffff93 .word 0
430 0000F015 dd 8f00000000 clrl _pipe_test /* reset the pipe-test flag */
431 0000F01B fe 08 efffffff86 callf $4,_pack_inst /* pack the instr's code */
432 0000F022 dd 8f00000000 pushl $_load_regs /* buffer for loading regs */
433 0000F028 fe 08 efffffff79 callf $8,_fill_reg_buf /* fill the buffer */
434 0000F02F pushl $_exp_regs /* expected reg values */
437 0000F02F 4d efffffff73 callf $8,_fill_reg_buf /* fill the buffer */
438 0000F035 /*
439 0000F035 5c 04 efffffff6c 50 * test the instruction
440 0000F03D 0d 40ffffffff64 */
efffffff5f
441 0000F049 6d 50 clrl _index
442 0000F04B 0d 40ffffffff56 3:
efffffff55
443 0000F057 mull3 $4,_index,r0 /* get longword offset */
444 0000F057 fe 04 efffffff4a movl *_data_ptr[r0],_dbl_ld_acc /* get load data's MSW */
445 0000F05E 5d efffffff44 incl r0
446 0000F064 21 f1 movl *_data_ptr[r0],_dbl_ld_acc+4 /* get load data's LSW */
447 0000F066 1d efffffff3c efffffff37 2:
448 0000F071 81 0c callf $4,_run_code /* execute the instruction */
449 0000F073 6d efffffff2f tstl _force_loop
450 0000F079 71 efffffffb6 bneq 2b /* loop on an error */
451 0000F07F cmpl _index,_max_index /* last data pattern? */
452 0000F07F 40 bgeq 1f
453 0000F080 incl _index /* bump the index */
454 0000F080 jmp 3b /* test next data pattern */
455 0000F080 1:
456 0000F080 ret /* return to test_code */
457 0000F080
458 0000F080
459 0000F080
460 0000F080
461 0000F080 # ***************************************************************************
462 0000F080 # *
463 0000F080 # * TEST A NO OPERAND INSTRUCTION WITH A LOAD INSTRUCION IN FRONT OF IT
464 0000F080 # *
465 0000F080 # ***************************************************************************
466 0000F080 0000 .text
467 0000F082 0d 01 efffffff1f .align 1
468 0000F089 0d 8862 efffffff17 .globl _test_0_pipe1
469 0000F091 1d 02 efffffff10 _test_0_pipe1:
470 0000F098 31 09 .word 0
471 0000F09A 0d 06 efffffff07 movl $1,_pipe_test /* set the pipe_test flag */
472 0000F0A1 11 07 movl $0x62,_addr_code_p1 /* set the addr mode */
473 0000F0A3 0d 07 effffffefe cmpl $DBL,_acc_ld_size /* DBL or SGL ACC? */
474 0000F0AA beql 1f
475 0000F0AA fe 04 effffffef7 movl $LDF_OP_CODE,_pipe_inst1 /* pipe inst = load single */
476 0000F0B1 dd 8f00000000 brb 2f
477 0000F0B7 fe 08 effffffeea 1: movl $LDD_OP_CODE,_pipe_inst1 /* pipe inst = load double */
478 0000F0BE dd 8f00000000 2:
479 0000F0C4 fe 08 effffffedd callf $4,_pack_inst /* pack the instr's code */
480 0000F0CB ed effffffed7 effffffeda pushl $_load_regs /* buffer for loading regs */
481 0000F0D6 ed effffffecc effffffecf callf $8,_fill_reg_buf /* fill the buffer */
482 0000F0E1 pushl $_exp_regs /* expected reg values */
485 0000F0E1 4d effffffec1 callf $8,_fill_reg_buf /* fill the buffer */
486 0000F0E7 moval _dbl_ld_acc,_load_regs+8 /* R2 points to the data */
487 0000F0E7 5c 04 effffffeba 50 moval _dbl_ld_acc,_exp_regs+8 /* R2 points to the data */
488 0000F0EF 0d 40fffffffeb2 /*
effffffead
489 0000F0FB 6d 50 * test the instruction
490 0000F0FD 0d 40fffffffea4 */
effffffea3
491 0000F109 clrl _index
492 0000F109 fe 04 effffffe98 3:
493 0000F110 5d effffffe92 mull3 $4,_index,r0 /* get longword offset */
494 0000F116 21 f1 movl *_data_ptr[r0],_dbl_ld_acc /* get load data's MSW */
495 0000F118 1d effffffe8a effffffe85 incl r0
496 0000F123 81 0c movl *_data_ptr[r0],_dbl_ld_acc+4 /* get load data's LSW */
497 0000F125 6d effffffe7d 2:
498 0000F12B 71 efffffffb6 callf $4,_run_code /* execute the instruction */
499 0000F131 tstl _force_loop
500 0000F131 4d effffffe71 bneq 2b /* loop on an error */
501 0000F137 40 cmpl _index,_max_index /* last data pattern? */
502 0000F138 bgeq 1f
503 0000F138 incl _index /* bump the index */
504 0000F138 jmp 3b /* test next data pattern */
505 0000F138 1:
506 0000F138 clrl _pipe_test /* reset the pipe-test flag */
507 0000F138 ret /* return to test_code */
508 0000F138
509 0000F138
510 0000F138
511 0000F138
512 0000F138 # ***************************************************************************
513 0000F138 # *
514 0000F138 # * TEST A NO OPERAND INSTRUCTION WITH AN ADD INSTRUCION IN FRONT OF IT
515 0000F138 0000 # *
516 0000F13A 0d 02 effffffe67 # ***************************************************************************
517 0000F141 0d 8862 effffffe5f .text
518 0000F149 1d 02 effffffe58 .align 1
519 0000F150 31 0b .globl _test_0_pipe2
520 0000F152 0d 8900c6 effffffe4d _test_0_pipe2:
521 0000F15B 11 09 .word 0
522 0000F15D 0d 8900c7 effffffe42 movl $2,_pipe_test /* set the pipe_test flag */
523 0000F166 movl $0x62,_addr_code_p1 /* set the addr mode */
524 0000F166 fe 04 effffffe3b cmpl $DBL,_acc_ld_size /* DBL or SGL ACC? */
525 0000F16D dd 8f00000000 beql 1f
526 0000F173 fe 08 effffffe2e movl $ADDF_OP_CODE,_pipe_inst1 /* pipe inst = add single */
527 0000F17A dd 8f00000000 brb 2f
528 0000F180 fe 08 effffffe21 1: movl $ADDD_OP_CODE,_pipe_inst1 /* pipe inst = add double */
529 0000F187 ed effffffe1b effffffe1e 2:
530 0000F192 ed effffffe10 effffffe13 callf $4,_pack_inst /* pack the instr's code */
531 0000F19D pushl $_load_regs /* buffer for loading regs */
534 0000F19D 4d effffffe05 callf $8,_fill_reg_buf /* fill the buffer */
535 0000F1A3 pushl $_exp_regs /* expected reg values */
536 0000F1A3 5c 04 effffffdfe 50 callf $8,_fill_reg_buf /* fill the buffer */
537 0000F1AB 0d 40fffffffdf6 moval _dbl_ld_acc,_load_regs+8 /* R2 points to the data */
effffffdf1
538 0000F1B7 6d 50 moval _dbl_ld_acc,_exp_regs+8 /* R2 points to the data */
539 0000F1B9 0d 40fffffffde8 /*
effffffde7
540 0000F1C5 * test the instruction
541 0000F1C5 fe 04 effffffddc */
542 0000F1CC 5d effffffdd6 clrl _index
543 0000F1D2 21 f1 3:
544 0000F1D4 1d effffffdce effffffdc9 mull3 $4,_index,r0 /* get longword offset */
545 0000F1DF 81 0c movl *_data_ptr[r0],_dbl_ld_acc /* get load data's MSW */
546 0000F1E1 6d effffffdc1 incl r0
547 0000F1E7 71 efffffffb6 movl *_data_ptr[r0],_dbl_ld_acc+4 /* get load data's LSW */
548 0000F1ED 2:
549 0000F1ED 4d effffffdb5 callf $4,_run_code /* execute the instruction */
550 0000F1F3 40 tstl _force_loop
551 0000024c * bneq 2b /* loop on an error */
552 0000024c * cmpl _index,_max_index /* last data pattern? */
553 0000024c * bgeq 1f
553 0000024c * bgeq 1f
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.