Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / isa3 / max_rand_fgu_rand_59a.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: max_rand_fgu_rand_59a.s
5* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
6* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
7*
8* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9*
10* This program is free software; you can redistribute it and/or modify
11* it under the terms of the GNU General Public License as published by
12* the Free Software Foundation; version 2 of the License.
13*
14* This program is distributed in the hope that it will be useful,
15* but WITHOUT ANY WARRANTY; without even the implied warranty of
16* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17* GNU General Public License for more details.
18*
19* You should have received a copy of the GNU General Public License
20* along with this program; if not, write to the Free Software
21* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22*
23* For the avoidance of doubt, and except that if any non-GPL license
24* choice is available it will apply instead, Sun elects to use only
25* the General Public License version 2 (GPLv2) at this time for any
26* software where a choice of GPL license versions is made
27* available with the language indicating that GPLv2 or any later version
28* may be used, or where a choice of which version of the GPL is applied is
29* otherwise unspecified.
30*
31* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
32* CA 95054 USA or visit www.sun.com if you need additional information or
33* have any questions.
34*
35*
36* ========== Copyright Header End ============================================
37*/
38#define MAIN_PAGE_HV_ALSO
39#define MAX_SPU_TRAP_CNT 1
40#define NO_TRAPCHECK
41#define H_HT0_Control_Word_Queue_Interrupt_0x3c
42#define My_HT0_Control_Word_Queue_Interrupt_0x3c \
43 sub %i6, 1, %i6; \
44 retry;
45
46! next is for fgu part vvvvvvvvvvvvvvvvvv
47# 1 "/import/n2-aus-localdir1/co132877/n2cdmspp/verif/diag/assembly/uarch/spu/include/fguSpuDefines.h"
48#define FP_IEEE_754_ENABLE 0x1
49!! previous causes define of
50!! ENABLE_T0_Fp_exception_ieee_754_0x21
51!! ENABLE_HT0_Fp_exception_ieee_754_0x21
52#
53#define FP_EXCP_OTHER_ENABLE 0x1
54!! previous causes define of
55!! ENABLE_T0_Fp_exception_other_0x22
56!! ENABLE_HT0_Fp_exception_other_0x22
57#
58#define DIV_ZERO_ENABLE 0x1
59!! previous causes define of
60!! ENABLE_T0_Division_By_Zero_0x28 and
61!! ENABLE_HT0_Division_By_Zero_0x28
62#
63#define ILLEGAL_ENABLE 0x1
64!! previous causes define of
65!! ENABLE_T0_Illegal_instruction_0x10
66!! ENABLE_HT0_Illegal_instruction_0x10
67#define ENABLE_T1_Illegal_instruction_0x10
68#define ENABLE_HT1_Illegal_instruction_0x10
69#
70!!!!!!#define PRIVILEGED_ACTION_ENABLE 0x1
71!! previous causes define of
72!! ENABLE_T0_Privileged_Action_0x37
73!! ENABLE_HT0_Privileged_Action_0x37
74#
75!!!!!!#define PRIVILEGED_OPCODE_ENABLE 0x1
76!! previous causes define of
77!! ENABLE_T0_Privileged_opcode_0x11
78!! ENABLE_HT0_Privileged_opcode_0x11
79#
80!!!!!!#define INSTRUCTION_ACCESS_EXCEPTION_ENABLE 0x1
81!! previous causes define of
82!! ENABLE_T0_Instruction_access_exception_0x08
83!! ENABLE_HT0_Instruction_access_exception_0x08
84#
85!!!!!!#define DATA_ACCESS_EXCEPTION_ENABLE 0x1
86!! previous causes define of
87!! ENABLE_T0_Data_Access_Exception_0x30
88!! ENABLE_HT0_Data_Access_Exception_0x30
89#
90#define MAIN_PAGE_NUCLEUS_ALSO
91
92!----------------------------------------------------------
93!!!!!!#define NOSPEC_EN
94
95!!!!!!
96#define MAIN_PAGE_HV_ALSO
97#define SKIP_TRAPCHECK
98
99#define ENABLE_T0_Mem_Address_Not_Aligned_0x34
100#define ENABLE_T0_Lddf_Mem_Address_Not_Aligned_0x35
101#define ENABLE_T0_Stdf_Mem_Address_Not_Aligned_0x36
102#define ENABLE_HT0_Mem_Address_Not_Aligned_0x34
103#define ENABLE_HT0_Lddf_Mem_Address_Not_Aligned_0x35
104#define ENABLE_HT0_Stdf_Mem_Address_Not_Aligned_0x36
105#define ENABLE_T0_Window_Fill_0_Normal_0xc0
106#define ENABLE_T0_Window_Fill_1_Normal_0xc4
107#define ENABLE_T0_Window_Fill_2_Normal_0xc8
108#define ENABLE_T0_Window_Fill_3_Normal_0xcc
109#define ENABLE_T0_Window_Fill_4_Normal_0xd0
110#define ENABLE_T0_Window_Fill_5_Normal_0xd4
111#define ENABLE_T0_Window_Fill_6_Normal_0xd8
112#define ENABLE_T0_Window_Fill_7_Normal_0xdc
113#define ENABLE_HT0_Window_Fill_0_Normal_0xc0
114#define ENABLE_HT0_Window_Fill_1_Normal_0xc4
115#define ENABLE_HT0_Window_Fill_2_Normal_0xc8
116#define ENABLE_HT0_Window_Fill_3_Normal_0xcc
117#define ENABLE_HT0_Window_Fill_4_Normal_0xd0
118#define ENABLE_HT0_Window_Fill_5_Normal_0xd4
119#define ENABLE_HT0_Window_Fill_6_Normal_0xd8
120#define ENABLE_HT0_Window_Fill_7_Normal_0xdc
121#define ENABLE_T0_Window_Spill_0_Normal_0x80
122#define ENABLE_T0_Window_Spill_1_Normal_0x84
123#define ENABLE_T0_Window_Spill_2_Normal_0x88
124#define ENABLE_T0_Window_Spill_3_Normal_0x8c
125#define ENABLE_T0_Window_Spill_4_Normal_0x90
126#define ENABLE_T0_Window_Spill_5_Normal_0x94
127#define ENABLE_T0_Window_Spill_6_Normal_0x98
128#define ENABLE_T0_Window_Spill_7_Normal_0x9c
129#define ENABLE_T0_Window_Spill_0_Other_0xa0
130#define ENABLE_T0_Window_Spill_1_Other_0xa4
131#define ENABLE_T0_Window_Spill_2_Other_0xa8
132#define ENABLE_T0_Window_Spill_3_Other_0xac
133#define ENABLE_T0_Window_Spill_4_Other_0xb0
134#define ENABLE_T0_Window_Spill_5_Other_0xb4
135#define ENABLE_T0_Window_Spill_6_Other_0xb8
136#define ENABLE_T0_Window_Spill_7_Other_0xbc
137#define ENABLE_HT0_Window_Spill_0_Normal_0x80
138#define ENABLE_HT0_Window_Spill_1_Normal_0x84
139#define ENABLE_HT0_Window_Spill_2_Normal_0x88
140#define ENABLE_HT0_Window_Spill_3_Normal_0x8c
141#define ENABLE_HT0_Window_Spill_4_Normal_0x90
142#define ENABLE_HT0_Window_Spill_5_Normal_0x94
143#define ENABLE_HT0_Window_Spill_6_Normal_0x98
144#define ENABLE_HT0_Window_Spill_7_Normal_0x9c
145#define ENABLE_HT0_Window_Spill_0_Other_0xa0
146#define ENABLE_HT0_Window_Spill_1_Other_0xa4
147#define ENABLE_HT0_Window_Spill_2_Other_0xa8
148#define ENABLE_HT0_Window_Spill_3_Other_0xac
149#define ENABLE_HT0_Window_Spill_4_Other_0xb0
150#define ENABLE_HT0_Window_Spill_5_Other_0xb4
151#define ENABLE_HT0_Window_Spill_6_Other_0xb8
152#define ENABLE_HT0_Window_Spill_7_Other_0xbc
153# 509 "diag.j"
154! next is for fgu part ^^^^^^^^^^^^^^^^^^
155
156#include "hboot.s"
157
158#define MAX_TIMEOUT 0x002
159#define WAIT_LOOP 0x100
160# 520 "diag.j"
161.text
162.global main
163
164main:
165
166 ta %icc, T_RD_THID
167! fork: source strm = 0xffffffff; target strm = 0x1
168 cmp %o1, 0
169 setx fork_lbl_0_1, %g2, %g3
170 be,a .+8
171 jmp %g3
172 nop
173! fork: source strm = 0xffffffff; target strm = 0x2
174 cmp %o1, 1
175 setx fork_lbl_0_2, %g2, %g3
176 be,a .+8
177 jmp %g3
178 nop
179! fork: source strm = 0xffffffff; target strm = 0x4
180 cmp %o1, 2
181 setx fork_lbl_0_3, %g2, %g3
182 be,a .+8
183 jmp %g3
184 nop
185! fork: source strm = 0xffffffff; target strm = 0x8
186 cmp %o1, 3
187 setx fork_lbl_0_4, %g2, %g3
188 be,a .+8
189 jmp %g3
190 nop
191! fork: source strm = 0xffffffff; target strm = 0x10
192 cmp %o1, 4
193 setx fork_lbl_0_5, %g2, %g3
194 be,a .+8
195 jmp %g3
196 nop
197! fork: source strm = 0xffffffff; target strm = 0x20
198 cmp %o1, 5
199 setx fork_lbl_0_6, %g2, %g3
200 be,a .+8
201 jmp %g3
202 nop
203! fork: source strm = 0xffffffff; target strm = 0x40
204 cmp %o1, 6
205 setx fork_lbl_0_7, %g2, %g3
206 be,a .+8
207 jmp %g3
208 nop
209! fork: source strm = 0xffffffff; target strm = 0x80
210 cmp %o1, 7
211 setx fork_lbl_0_8, %g2, %g3
212 be,a .+8
213 jmp %g3
214 nop
215! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 8, 16, 16)) -> intp(1, 1, 1)
216! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 16, 16, 16)) -> intp(2, 1, 1)
217! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 24, 16, 16)) -> intp(3, 1, 1)
218! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 32, 16, 16)) -> intp(4, 1, 1)
219! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 40, 16, 16)) -> intp(5, 1, 1)
220! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 48, 16, 16)) -> intp(6, 1, 1)
221! $EV trig_pc_d(1,expr(@VA(.RED_EXT_SEC.HRedmode_Reset_Handler) + 56, 16, 16)) -> intp(7, 1, 1)
222
223fail:
224 EXIT_BAD
225
226 setx join_lbl_0_0, %g1, %g2
227 jmp %g2
228 nop
229 setx join_lbl_0_0, %g1, %g2
230 jmp %g2
231 nop
232fork_lbl_0_8:
233 .word 0x99b4cd15 ! 2: FANDNOT1 fnot1 %d50, %d52, %d12
234 .word 0x01000000 ! 3: NOP nop
235 .word 0x93a0005c ! 4: FMOVd fmovd %f28, %f40
236 .word 0x99b6c6cb ! 5: FMUL8SUx16 fmul8ulx16 %d58, %d42, %d12
237 .word 0x95b00767 ! 6: FPACK16 fucmpeq8 %d0, %d38, %d10
238 .word 0x93a44d38 ! 7: FsMULd fsmuld %f17, %f24, %f40
239 .word 0x97a01a5c ! 8: FdTOi dis not found
240
241 .word 0x98b64013 ! 9: ORNcc_R orncc %r25, %r19, %r12
242 .word 0x91b6041a ! 10: FCMPLE16 fcmple16 %d24, %d26, %r8
243 setx join_lbl_0_0, %g1, %g2
244 jmp %g2
245 nop
246fork_lbl_0_7:
247 .word 0x95b40d1c ! 2: FANDNOT1 fnot1 %d16, %d28, %d10
248 .word 0x01000000 ! 3: NOP nop
249 .word 0x93a0004c ! 4: FMOVd fmovd %f12, %f40
250 .word 0x91b646d3 ! 5: FMUL8SUx16 fmul8ulx16 %d56, %d50, %d8
251 .word 0x95b00765 ! 6: FPACK16 fucmpeq8 %d0, %d36, %d10
252 .word 0x95a3cd36 ! 7: FsMULd fsmuld %f15, %f22, %f10
253 .word 0x97a01a54 ! 8: FdTOi dis not found
254
255 .word 0x92b2000c ! 9: ORNcc_R orncc %r8, %r12, %r9
256 .word 0x97b58414 ! 10: FCMPLE16 fcmple16 %d22, %d20, %r11
257 setx join_lbl_0_0, %g1, %g2
258 jmp %g2
259 nop
260fork_lbl_0_6:
261 .word 0x97b5cd07 ! 2: FANDNOT1 fnot1 %d54, %d38, %d42
262 .word 0x01000000 ! 3: NOP nop
263 .word 0x91a00049 ! 4: FMOVd fmovd %f40, %f8
264 .word 0x97b686d7 ! 5: FMUL8SUx16 fmul8ulx16 %d26, %d54, %d42
265 .word 0x93b00767 ! 6: FPACK16 fucmpeq8 %d0, %d38, %d40
266 .word 0x93a28d28 ! 7: FsMULd fsmuld %f10, %f8, %f40
267 .word 0x99a01a59 ! 8: FdTOi dis not found
268
269 .word 0x92b1800e ! 9: ORNcc_R orncc %r6, %r14, %r9
270 .word 0x91b24412 ! 10: FCMPLE16 fcmple16 %d40, %d18, %r8
271 setx join_lbl_0_0, %g1, %g2
272 jmp %g2
273 nop
274fork_lbl_0_5:
275 .word 0x97b28d0f ! 2: FANDNOT1 fnot1 %d10, %d46, %d42
276 .word 0x01000000 ! 3: NOP nop
277 .word 0x99a0005d ! 4: FMOVd fmovd %f60, %f12
278 .word 0x93b686d3 ! 5: FMUL8SUx16 fmul8ulx16 %d26, %d50, %d40
279 .word 0x95b0077c ! 6: FPACK16 fucmpeq8 %d0, %d28, %d10
280 .word 0x99a2cd3c ! 7: FsMULd fsmuld %f11, %f28, %f12
281 .word 0x97a01a4f ! 8: FdTOi dis not found
282
283 .word 0x94b24012 ! 9: ORNcc_R orncc %r9, %r18, %r10
284 .word 0x95b74418 ! 10: FCMPLE16 fcmple16 %d60, %d24, %r10
285 setx join_lbl_0_0, %g1, %g2
286 jmp %g2
287 nop
288fork_lbl_0_4:
289 .word 0x91b3cd19 ! 2: FANDNOT1 fnot1 %d46, %d56, %d8
290 .word 0x01000000 ! 3: NOP nop
291 .word 0x97a00046 ! 4: FMOVd fmovd %f6, %f42
292 .word 0x93b4c6dd ! 5: FMUL8SUx16 fmul8ulx16 %d50, %d60, %d40
293 .word 0x93b00778 ! 6: FPACK16 fucmpeq8 %d0, %d24, %d40
294 .word 0x91a38d3c ! 7: FsMULd fsmuld %f14, %f28, %f8
295 .word 0x97a01a4e ! 8: FdTOi dis not found
296
297 .word 0x90b38013 ! 9: ORNcc_R orncc %r14, %r19, %r8
298 .word 0x95b74408 ! 10: FCMPLE16 fcmple16 %d60, %d8, %r10
299 setx join_lbl_0_0, %g1, %g2
300 jmp %g2
301 nop
302fork_lbl_0_3:
303 .word 0x91b54d0f ! 2: FANDNOT1 fnot1 %d52, %d46, %d8
304 .word 0x01000000 ! 3: NOP nop
305 .word 0x95a0005d ! 4: FMOVd fmovd %f60, %f10
306 .word 0x97b586dc ! 5: FMUL8SUx16 fmul8ulx16 %d22, %d28, %d42
307 .word 0x95b00765 ! 6: FPACK16 fucmpeq8 %d0, %d36, %d10
308 .word 0x93a20d2d ! 7: FsMULd fsmuld %f8, %f44, %f40
309 .word 0x95a01a45 ! 8: FdTOi dis not found
310
311 .word 0x94b3c01c ! 9: ORNcc_R orncc %r15, %r28, %r10
312 .word 0x93b6440a ! 10: FCMPLE16 fcmple16 %d56, %d10, %r9
313 setx join_lbl_0_0, %g1, %g2
314 jmp %g2
315 nop
316fork_lbl_0_2:
317 .word 0x99b48d08 ! 2: FANDNOT1 fnot1 %d18, %d8, %d12
318 .word 0x01000000 ! 3: NOP nop
319 .word 0x91a0004f ! 4: FMOVd fmovd %f46, %f8
320 .word 0x97b6c6d6 ! 5: FMUL8SUx16 fmul8ulx16 %d58, %d22, %d42
321 .word 0x95b0076c ! 6: FPACK16 fucmpeq8 %d0, %d12, %d10
322 .word 0x97a1cd3a ! 7: FsMULd fsmuld %f7, %f26, %f42
323 .word 0x99a01a4c ! 8: FdTOi dis not found
324
325 .word 0x98b5801a ! 9: ORNcc_R orncc %r22, %r26, %r12
326 .word 0x97b20416 ! 10: FCMPLE16 fcmple16 %d8, %d22, %r11
327 setx join_lbl_0_0, %g1, %g2
328 jmp %g2
329 nop
330fork_lbl_0_1:
331 setx 0x0000deadbeefbad0, %l5, %l4
332
333 !# Switch to hpriv mode
334 ta T_CHANGE_HPRIV
335
336 or %g0, 0x0, %g2 !# Operation Step
337 or %g0, 0x0, %g4 !# Operand Step
338
339 set 0x2d84, %g3
340 stxa %g3, [%g0] ASI_SPARC_PWR_MGMT
341 wr %g3, 0x4, %fprs
342
343 mov %l7, %g1
344 wrpr %g0, 0x0, %cwp
345
346 or %g0, 0x8, %l0
347 sllx %l0, 0x3c, %l0
348 wrhpr %l0, 0x580, %hsys_tick_cmpr
349 wr %l0, 0x580, %sys_tick_cmpr
350 wr %l0, 0x580, %tick_cmpr
351# 556 "diag.j"
352 !# Execute Main Diag ..
353 !# Write address of data region to load from in MA_PA reg, and check
354 setx MA_OPERANDS, %g6, %l7
355 add %l7, 12, %l7 !# WARNING : Misaligned address
356 add %l7, %g4, %l7
357 wr %g0, 0x40, %asi
358 stxa %l7, [%g0 + 0x88] %asi
359
360ma_load:
361 !# Write MAMEM address, start at 0
362 or %g0, 0x0, %l2
363 stxa %l2, [%g0 + 0x90] %asi
364
365 !# write MA_CTL
366 setx 0x9f, %g7, %l1
367 stxa %l1, [%g0 + 0x80] %asi !# LOAD
368
369 !# setup mask to check for INVOP
370 or %g0, 0x1, %l2
371 sllx %l2, 21, %l2
372
373 #! Try MA_SYNC operation...
374wait:
375 ldxa [%g0 + 0xA0] %asi, %l1
376 ldxa [%g0 + 0x80] %asi, %l1
377 andcc %l1, %l2, %l1
378 bne,pn %xcc, fail
379 nop
380
381
382loop_0:
383 !# write NPRIME
384 setx 0x1aec2aaf44ca7551, %g7, %l2
385 stxa %l2, [%g0 + 0x98] %asi
386
387 setx MA_OPERATIONS, %g6, %l7
388 or %g0, 8, %i0 !# OPSELECT
389 umul %i0, 16, %i0
390 add %i0, %g2, %i0
391
392 !# write MA_ADDR
393 ldx [%l7 + %i0], %l1
394 stxa %l1, [%g0 + 0x90] %asi
395
396 !# write MA_CTL
397 add %i0, 8, %i0
398 ldx [%l7 + %i0], %l1
399 stxa %l1, [%g0 + 0x80] %asi !# OPERATION
400
401 !# setup mask to check for INVOP
402 or %g0, 0x1, %l2
403 sllx %l2, 21, %l2
404
405 #! Try MA_SYNC operation...
406wait2_0:
407 ldxa [%g0 + 0xA0] %asi, %l1
408 ldxa [%g0 + 0x98] %asi, %l1 !# MA PA
409 ldxa [%g0 + 0x90] %asi, %l1 !# MA Addr
410 ldxa [%g0 + 0x88] %asi, %l1 !# MA PA
411 ldxa [%g0 + 0x80] %asi, %l1 !# MA CTL
412 andcc %l1, %l2, %l1
413 bne,pn %xcc, fail
414 nop
415# 626 "diag.j"
416 add %g2, 64, %g2 !# Operation Step (16 * # of operations in queue)
417 add %g4, 164, %g4 !# Operand Step (always 164)
418# 630 "diag.j"
419
420loop_1:
421 !# write NPRIME
422 setx 0x1b10ff007812ea4b, %g7, %l2
423 stxa %l2, [%g0 + 0x98] %asi
424
425 setx MA_OPERATIONS, %g6, %l7
426 or %g0, 11, %i0 !# OPSELECT
427 umul %i0, 16, %i0
428 add %i0, %g2, %i0
429
430 !# write MA_ADDR
431 ldx [%l7 + %i0], %l1
432 stxa %l1, [%g0 + 0x90] %asi
433
434 !# write MA_CTL
435 add %i0, 8, %i0
436 ldx [%l7 + %i0], %l1
437 stxa %l1, [%g0 + 0x80] %asi !# OPERATION
438
439 !# setup mask to check for INVOP
440 or %g0, 0x1, %l2
441 sllx %l2, 21, %l2
442
443 #! Try MA_SYNC operation...
444wait2_1:
445 ldxa [%g0 + 0xA0] %asi, %l1
446 ldxa [%g0 + 0x98] %asi, %l1 !# MA PA
447 ldxa [%g0 + 0x90] %asi, %l1 !# MA Addr
448 ldxa [%g0 + 0x88] %asi, %l1 !# MA PA
449 ldxa [%g0 + 0x80] %asi, %l1 !# MA CTL
450 andcc %l1, %l2, %l1
451 bne,pn %xcc, fail
452 nop
453# 626 "diag.j"
454 add %g2, 64, %g2 !# Operation Step (16 * # of operations in queue)
455 add %g4, 164, %g4 !# Operand Step (always 164)
456# 630 "diag.j"
457
458loop_2:
459 !# write NPRIME
460 setx 0x94dc8547c4c7c603, %g7, %l2
461 stxa %l2, [%g0 + 0x98] %asi
462
463 setx MA_OPERATIONS, %g6, %l7
464 or %g0, 2, %i0 !# OPSELECT
465 umul %i0, 16, %i0
466 add %i0, %g2, %i0
467
468 !# write MA_ADDR
469 ldx [%l7 + %i0], %l1
470 stxa %l1, [%g0 + 0x90] %asi
471
472 !# write MA_CTL
473 add %i0, 8, %i0
474 ldx [%l7 + %i0], %l1
475 stxa %l1, [%g0 + 0x80] %asi !# OPERATION
476
477 !# setup mask to check for INVOP
478 or %g0, 0x1, %l2
479 sllx %l2, 21, %l2
480
481 #! Try MA_SYNC operation...
482wait2_2:
483 ldxa [%g0 + 0xA0] %asi, %l1
484 ldxa [%g0 + 0x98] %asi, %l1 !# MA PA
485 ldxa [%g0 + 0x90] %asi, %l1 !# MA Addr
486 ldxa [%g0 + 0x88] %asi, %l1 !# MA PA
487 ldxa [%g0 + 0x80] %asi, %l1 !# MA CTL
488 andcc %l1, %l2, %l1
489 bne,pn %xcc, fail
490 nop
491# 626 "diag.j"
492 add %g2, 64, %g2 !# Operation Step (16 * # of operations in queue)
493 add %g4, 164, %g4 !# Operand Step (always 164)
494# 630 "diag.j"
495
496loop_3:
497 !# write NPRIME
498 setx 0xf54c251f1394aafe, %g7, %l2
499 stxa %l2, [%g0 + 0x98] %asi
500
501 setx MA_OPERATIONS, %g6, %l7
502 or %g0, 0, %i0 !# OPSELECT
503 umul %i0, 16, %i0
504 add %i0, %g2, %i0
505
506 !# write MA_ADDR
507 ldx [%l7 + %i0], %l1
508 stxa %l1, [%g0 + 0x90] %asi
509
510 !# write MA_CTL
511 add %i0, 8, %i0
512 ldx [%l7 + %i0], %l1
513 stxa %l1, [%g0 + 0x80] %asi !# OPERATION
514
515 !# setup mask to check for INVOP
516 or %g0, 0x1, %l2
517 sllx %l2, 21, %l2
518
519 #! Try MA_SYNC operation...
520wait2_3:
521 ldxa [%g0 + 0xA0] %asi, %l1
522 ldxa [%g0 + 0x98] %asi, %l1 !# MA PA
523 ldxa [%g0 + 0x90] %asi, %l1 !# MA Addr
524 ldxa [%g0 + 0x88] %asi, %l1 !# MA PA
525 ldxa [%g0 + 0x80] %asi, %l1 !# MA CTL
526 andcc %l1, %l2, %l1
527 bne,pn %xcc, fail
528 nop
529# 626 "diag.j"
530 add %g2, 64, %g2 !# Operation Step (16 * # of operations in queue)
531 add %g4, 164, %g4 !# Operand Step (always 164)
532# 630 "diag.j"
533
534ma_store:
535
536 !# write MA_ADDR
537 or %g0, 0x00, %l2
538 stxa %l2, [%g0 + 0x90] %asi
539# 642 "diag.j"
540 !# Write result address into MA_PA reg
541
542 setx MA_RESULTS, %g7, %l6
543 add %l6, 12, %l6 !# WARNING : Misaligned address
544 stxa %l6, [%g0 + 0x88] %asi
545
546 !# write MA_CTL
547 setx 0x19f, %g7, %l1
548 stxa %l1, [%g0 + 0x80] %asi !# STORE
549
550 !# setup mask to check for INVOP
551 or %g0, 0x1, %l2
552 sllx %l2, 21, %l2
553
554 #! Try MA_SYNC operation...
555wait3:
556 ldxa [%g0 + 0xA0] %asi, %l1
557 ldxa [%g0 + 0x80] %asi, %l1
558 andcc %l1, %l2, %l1
559 bne,pn %xcc, fail
560 nop
561
562idle3:
563
564 !# do dummy loads into %g1
565
566 setx MA_RESULTS, %g7, %l7
567 or %g0, %g0, %l3
568 !# setup loop count
569 or %g0, 164, %i0
570more:
571 ldx [%l7+%l3], %l0 !# a[i]
572 addcc %i0, -1, %i0
573 bgt more
574 add %l3, 0x8, %l3 !# i++
575
576
577join_lbl_0_0:
578
579.text
580 nop
581 nop
582 nop
583 ta T_GOOD_TRAP
584 nop
585 nop
586 nop
587# 707 "diag.j"
588.data
589user_data_start:
590scratch_area:
591
592.align 8
593MA_OPERANDS:
594.xword 0xad7ae25c366830e7
595.xword 0xc11f3a42ad2a71c1
596.xword 0xe06548e4aa84296b
597.xword 0xfc4ab7981dc36dd3
598.xword 0xbd9e5fb8da7140bb
599.xword 0x384e9de4be53f74a
600.xword 0xe10203b07aa0150d
601.xword 0x5e607418bc6f8743
602.xword 0x274dad7291a56380
603.xword 0x0f41fdf827735f91
604.xword 0x03a50b107fe01b7a
605.xword 0x2491f5e1ee1ff9b7
606.xword 0x7a7268a8a15ae10b
607.xword 0x1d6bfd51b0eeb42b
608.xword 0xf44a7e9541461a42
609.xword 0x0ffd84082eeccb26
610.xword 0xa53c8579631208fe
611.xword 0x8282c45f8c3eb790
612.xword 0xe6204581a9b0eb03
613.xword 0xc0f65ed731f0f4fb
614.xword 0x7ba8a3836a19a102
615.xword 0x00b71303b34a2c91
616.xword 0xd3ccdf440370ab66
617.xword 0xec292cb5cabc0bab
618.xword 0x1b785d531884817a
619.xword 0x59eb2d3cab0ff053
620.xword 0x3f5ab3d017a78771
621.xword 0x31174e42691914ea
622.xword 0x3c69fea103333748
623.xword 0xa292da7cae0dd1d8
624.xword 0xe1082ea131f0a516
625.xword 0xa07eb4d1fc37b83d
626.xword 0xd816b239c4b439e0
627.xword 0x69de57cb86e69b35
628.xword 0x1342db891699ebe2
629.xword 0xba0efc175d0f334a
630.xword 0x29e1642d3472955e
631.xword 0x06d8391780560788
632.xword 0x915784df632d10f6
633.xword 0x1b437b4efee305ea
634.xword 0x276379c82a7a6ed9
635.xword 0x6fc0901e15964ad3
636.xword 0xe289b72e3c0f727d
637.xword 0x6d911ffd660056d1
638.xword 0xc42866b59f2acb82
639.xword 0xcc724f1946829c56
640.xword 0x8347ef9064dcf0b8
641.xword 0x8324064ea4b6ddf3
642.xword 0x1ba8308dcb454212
643.xword 0x793c437472342cb6
644.xword 0x46c3036710fcb7d0
645.xword 0xc332f1176a491886
646.xword 0x1d679cf2f3e56d81
647.xword 0x9cc52b4183311a35
648.xword 0xd62e9e019062cc91
649.xword 0xb508fc075afdf58a
650.xword 0xf816134b9bb17a41
651.xword 0x025e5ad63e3eec6d
652.xword 0x7b6c6fdc9842cffb
653.xword 0xbc8174cb1af5a8f7
654.xword 0x0c52ff1635d7da8b
655.xword 0xbae8266e3c97956a
656.xword 0xe3adfa789e1ea0f1
657.xword 0x22c9fc4263262316
658.xword 0x60569bc41a6229b4
659.xword 0x2951acb96627eee9
660.xword 0x18bcf04c3b578990
661.xword 0x04f2b6f3eaad06eb
662.xword 0x292dc2d04b3bfee7
663.xword 0xed64428c9eb3e29f
664.xword 0x94ceb23c9b94f681
665.xword 0x946a0f044dd54919
666.xword 0x69919c176517b1d7
667.xword 0xb4fc7d4d361a1819
668.xword 0xacaeafea49c2f4ee
669.xword 0x38f7120f62732227
670.xword 0x53b94bfff26e0bee
671.xword 0xe6193bccb1588c11
672.xword 0x48140f72d0930103
673.xword 0xe930d1ddff06c3af
674.xword 0xd5121331e3348ed4
675.xword 0xf3fbd3a4ad0e3944
676.xword 0x59e0a67811d71c79
677.xword 0xc5d4b9fc7eb36cd6
678.xword 0x7eccbbea413d5a34
679.xword 0x5db99f3cff23325f
680.xword 0xdc9fe59aee88a2bb
681.xword 0x96783ff2400bd902
682.xword 0xeedc3d0dedf70a1d
683.xword 0xa531ee841856819e
684.xword 0xcae3a05af38d6553
685.xword 0xed8b9167ba2d9f2e
686.xword 0x5654b7f4113163da
687.xword 0x394c9a3d9d78f9bf
688.xword 0xf0221bbac78d5918
689.xword 0x49a7ad810aa357aa
690.xword 0xb36d17fbe9ce52c3
691.xword 0xa2d83011f73c1ad8
692.xword 0xd515c8037e018c34
693.xword 0x3c9abe99fa4a92ba
694.xword 0x4e266de59ecf8c1e
695.xword 0xcda7b4308e8b86a7
696.xword 0xc69ed5685eae03c1
697.xword 0xe24d17a8d4c53749
698.xword 0x4e7bcdc224037190
699.xword 0x335e8ba404b48e94
700.xword 0xd416ee81b34e0070
701.xword 0x93adb6aa40cc56bb
702.xword 0xba9f5ab286ce4693
703.xword 0x22e4de635806333d
704.xword 0xbacadd4484ca0d99
705.xword 0xea581a65f7b6f258
706.xword 0xd25928622dff8d59
707.xword 0x84571c6492ec4f6b
708.xword 0x5f5c8a8b854d7570
709.xword 0xa26524004c8581b4
710.xword 0x30ed16f24c8a91b2
711.xword 0x5467d2571bc3878e
712.xword 0x54868c166f6c90ad
713.xword 0xe66be0cdd56c8648
714.xword 0x4c3dd40d1253bcb0
715.xword 0xa261e63ceae27e75
716.xword 0x03a0b2f1c0a2b51c
717.xword 0x93c056a40b284f46
718.xword 0x6abe74321a5eb42e
719.xword 0x45cd630ce59bfcc2
720.xword 0xb040b49483c28ceb
721.xword 0x2d6a7fd15709d482
722.xword 0x0a4af9ddd488cb46
723.xword 0x86b86318fce9afff
724.xword 0xc5c746970f009e4f
725.xword 0x54d4f3c6f013c63b
726.xword 0x5187643421cc9c41
727.xword 0xcae8c8a703ff800c
728.xword 0xa28d66d9450ab34f
729.xword 0xa74d7d69dfe5c254
730.xword 0x9be454479a64a7c3
731.xword 0x1ea5b0f835765b4a
732.xword 0x18130756bd35e69a
733.xword 0xa26afa50af9f9446
734.xword 0x3f4b875b849174a0
735.xword 0xd5c7dbb9c377e9fa
736.xword 0x19a97d5244ac57c1
737.xword 0x343343c8a8526102
738.xword 0x7bdc754e612f2e2e
739.xword 0x6b6631fcada95720
740.xword 0x835d031ff6bdb7a3
741.xword 0xa9d3051c67c3f73b
742.xword 0xd1b1a9c4d9d03225
743.xword 0xd72cb021ef399c5b
744.xword 0x2fc00b0a4d58566b
745.xword 0xbc1d74e8abeb3cc1
746.xword 0xb4bb06c7ee3dd75b
747.xword 0x7f4704189e951a09
748.xword 0x58c41ae5c5193661
749.xword 0x3cf007dd2a154c7d
750.xword 0x3918de425998f5fe
751.xword 0xe96856e88c91ee8c
752.xword 0x61fd6a92c544df47
753.xword 0x99078d42fe5d1f14
754.xword 0x35016e05fa0be22c
755.xword 0x1d1f41b8373fbabd
756.xword 0x9267a0d51b3bdaf5
757.xword 0xa22aa189a0791ec3
758
759.align 8
760MA_OPERATIONS:
761.xword 0x80604020
762.xword 0x212
763
764.xword 0x356a
765.xword 0x308
766
767.xword 0x0000096000408020
768.xword 0x402
769
770.xword 0x6a35
771.xword 0x50f
772
773.xword 0x78285050
774.xword 0x615
775
776.xword 0x80604020
777.xword 0x714
778
779.xword 0x00287850
780.xword 0x81f
781
782.xword 0x00287850
783.xword 0x927
784
785.xword 0x78285050
786.xword 0xa04
787
788.xword 0x64500000003c0000
789.xword 0xb02
790
791.xword 0x7766000000554422
792.xword 0xc05
793
794.xword 0x706200000054462a
795.xword 0xd02
796
797.xword 0x784d0d5800423721
798.xword 0xe02
799
800.xword 0x804d056000504020
801.xword 0xf01
802
803.xword 0x0000066000408020
804.xword 0x1004
805
806.xword 0x80604020
807.xword 0x21a
808
809.xword 0x356a
810.xword 0x307
811
812.xword 0x0000016000408020
813.xword 0x403
814
815.xword 0x6a35
816.xword 0x509
817
818.xword 0x78285050
819.xword 0x606
820
821.xword 0x80604020
822.xword 0x707
823
824.xword 0x00287850
825.xword 0x815
826
827.xword 0x00287850
828.xword 0x927
829
830.xword 0x78285050
831.xword 0xa27
832
833.xword 0x64500000003c0000
834.xword 0xb03
835
836.xword 0x7766000000554422
837.xword 0xc05
838
839.xword 0x706200000054462a
840.xword 0xd0d
841
842.xword 0x784d0d5800423721
843.xword 0xe02
844
845.xword 0x804d0a6000504020
846.xword 0xf01
847
848.xword 0x0000066000408020
849.xword 0x1002
850
851.xword 0x80604020
852.xword 0x218
853
854.xword 0x356a
855.xword 0x314
856
857.xword 0x00000f6000408020
858.xword 0x400
859
860.xword 0x6a35
861.xword 0x523
862
863.xword 0x78285050
864.xword 0x616
865
866.xword 0x80604020
867.xword 0x71f
868
869.xword 0x00287850
870.xword 0x80f
871
872.xword 0x00287850
873.xword 0x927
874
875.xword 0x78285050
876.xword 0xa14
877
878.xword 0x64500000003c0000
879.xword 0xb0c
880
881.xword 0x7766000000554422
882.xword 0xc09
883
884.xword 0x706200000054462a
885.xword 0xd06
886
887.xword 0x784d0e5800423721
888.xword 0xe01
889
890.xword 0x804d026000504020
891.xword 0xf01
892
893.xword 0x0000036000408020
894.xword 0x1000
895
896.xword 0x80604020
897.xword 0x20d
898
899.xword 0x356a
900.xword 0x318
901
902.xword 0x0000046000408020
903.xword 0x403
904
905.xword 0x6a35
906.xword 0x518
907
908.xword 0x78285050
909.xword 0x617
910
911.xword 0x80604020
912.xword 0x707
913
914.xword 0x00287850
915.xword 0x808
916
917.xword 0x00287850
918.xword 0x927
919
920.xword 0x78285050
921.xword 0xa13
922
923.xword 0x64500000003c0000
924.xword 0xb02
925
926.xword 0x7766000000554422
927.xword 0xc0a
928
929.xword 0x706200000054462a
930.xword 0xd08
931
932.xword 0x784d005800423721
933.xword 0xe03
934
935.xword 0x804d0e6000504020
936.xword 0xf00
937
938.xword 0x0000066000408020
939.xword 0x1001
940
941
942.align 8
943MA_RESULTS:
944.xword 0xDEADBEEFDEADBEEF
945.xword 0xDEADBEEFDEADBEEF
946.xword 0xDEADBEEFDEADBEEF
947.xword 0xDEADBEEFDEADBEEF
948.xword 0xDEADBEEFDEADBEEF
949.xword 0xDEADBEEFDEADBEEF
950.xword 0xDEADBEEFDEADBEEF
951.xword 0xDEADBEEFDEADBEEF
952.xword 0xDEADBEEFDEADBEEF
953.xword 0xDEADBEEFDEADBEEF
954.xword 0xDEADBEEFDEADBEEF
955.xword 0xDEADBEEFDEADBEEF
956.xword 0xDEADBEEFDEADBEEF
957.xword 0xDEADBEEFDEADBEEF
958.xword 0xDEADBEEFDEADBEEF
959.xword 0xDEADBEEFDEADBEEF
960.xword 0xDEADBEEFDEADBEEF
961.xword 0xDEADBEEFDEADBEEF
962.xword 0xDEADBEEFDEADBEEF
963.xword 0xDEADBEEFDEADBEEF
964.xword 0xDEADBEEFDEADBEEF
965.xword 0xDEADBEEFDEADBEEF
966.xword 0xDEADBEEFDEADBEEF
967.xword 0xDEADBEEFDEADBEEF
968.xword 0xDEADBEEFDEADBEEF
969.xword 0xDEADBEEFDEADBEEF
970.xword 0xDEADBEEFDEADBEEF
971.xword 0xDEADBEEFDEADBEEF
972.xword 0xDEADBEEFDEADBEEF
973.xword 0xDEADBEEFDEADBEEF
974.xword 0xDEADBEEFDEADBEEF
975.xword 0xDEADBEEFDEADBEEF
976.xword 0xDEADBEEFDEADBEEF
977.xword 0xDEADBEEFDEADBEEF
978.xword 0xDEADBEEFDEADBEEF
979.xword 0xDEADBEEFDEADBEEF
980.xword 0xDEADBEEFDEADBEEF
981.xword 0xDEADBEEFDEADBEEF
982.xword 0xDEADBEEFDEADBEEF
983.xword 0xDEADBEEFDEADBEEF
984.xword 0xDEADBEEFDEADBEEF
985.xword 0xDEADBEEFDEADBEEF
986.xword 0xDEADBEEFDEADBEEF
987.xword 0xDEADBEEFDEADBEEF
988.xword 0xDEADBEEFDEADBEEF
989.xword 0xDEADBEEFDEADBEEF
990.xword 0xDEADBEEFDEADBEEF
991.xword 0xDEADBEEFDEADBEEF
992.xword 0xDEADBEEFDEADBEEF
993.xword 0xDEADBEEFDEADBEEF
994.xword 0xDEADBEEFDEADBEEF
995.xword 0xDEADBEEFDEADBEEF
996.xword 0xDEADBEEFDEADBEEF
997.xword 0xDEADBEEFDEADBEEF
998.xword 0xDEADBEEFDEADBEEF
999.xword 0xDEADBEEFDEADBEEF
1000.xword 0xDEADBEEFDEADBEEF
1001.xword 0xDEADBEEFDEADBEEF
1002.xword 0xDEADBEEFDEADBEEF
1003.xword 0xDEADBEEFDEADBEEF
1004.xword 0xDEADBEEFDEADBEEF
1005.xword 0xDEADBEEFDEADBEEF
1006.xword 0xDEADBEEFDEADBEEF
1007.xword 0xDEADBEEFDEADBEEF
1008.xword 0xDEADBEEFDEADBEEF
1009.xword 0xDEADBEEFDEADBEEF
1010.xword 0xDEADBEEFDEADBEEF
1011.xword 0xDEADBEEFDEADBEEF
1012.xword 0xDEADBEEFDEADBEEF
1013.xword 0xDEADBEEFDEADBEEF
1014.xword 0xDEADBEEFDEADBEEF
1015.xword 0xDEADBEEFDEADBEEF
1016.xword 0xDEADBEEFDEADBEEF
1017.xword 0xDEADBEEFDEADBEEF
1018.xword 0xDEADBEEFDEADBEEF
1019.xword 0xDEADBEEFDEADBEEF
1020.xword 0xDEADBEEFDEADBEEF
1021.xword 0xDEADBEEFDEADBEEF
1022.xword 0xDEADBEEFDEADBEEF
1023.xword 0xDEADBEEFDEADBEEF
1024.xword 0xDEADBEEFDEADBEEF
1025.xword 0xDEADBEEFDEADBEEF
1026.xword 0xDEADBEEFDEADBEEF
1027.xword 0xDEADBEEFDEADBEEF
1028.xword 0xDEADBEEFDEADBEEF
1029.xword 0xDEADBEEFDEADBEEF
1030.xword 0xDEADBEEFDEADBEEF
1031.xword 0xDEADBEEFDEADBEEF
1032.xword 0xDEADBEEFDEADBEEF
1033.xword 0xDEADBEEFDEADBEEF
1034.xword 0xDEADBEEFDEADBEEF
1035.xword 0xDEADBEEFDEADBEEF
1036.xword 0xDEADBEEFDEADBEEF
1037.xword 0xDEADBEEFDEADBEEF
1038.xword 0xDEADBEEFDEADBEEF
1039.xword 0xDEADBEEFDEADBEEF
1040.xword 0xDEADBEEFDEADBEEF
1041.xword 0xDEADBEEFDEADBEEF
1042.xword 0xDEADBEEFDEADBEEF
1043.xword 0xDEADBEEFDEADBEEF
1044.xword 0xDEADBEEFDEADBEEF
1045.xword 0xDEADBEEFDEADBEEF
1046.xword 0xDEADBEEFDEADBEEF
1047.xword 0xDEADBEEFDEADBEEF
1048.xword 0xDEADBEEFDEADBEEF
1049.xword 0xDEADBEEFDEADBEEF
1050.xword 0xDEADBEEFDEADBEEF
1051.xword 0xDEADBEEFDEADBEEF
1052.xword 0xDEADBEEFDEADBEEF
1053.xword 0xDEADBEEFDEADBEEF
1054.xword 0xDEADBEEFDEADBEEF
1055.xword 0xDEADBEEFDEADBEEF
1056.xword 0xDEADBEEFDEADBEEF
1057.xword 0xDEADBEEFDEADBEEF
1058.xword 0xDEADBEEFDEADBEEF
1059.xword 0xDEADBEEFDEADBEEF
1060.xword 0xDEADBEEFDEADBEEF
1061.xword 0xDEADBEEFDEADBEEF
1062.xword 0xDEADBEEFDEADBEEF
1063.xword 0xDEADBEEFDEADBEEF
1064.xword 0xDEADBEEFDEADBEEF
1065.xword 0xDEADBEEFDEADBEEF
1066.xword 0xDEADBEEFDEADBEEF
1067.xword 0xDEADBEEFDEADBEEF
1068.xword 0xDEADBEEFDEADBEEF
1069.xword 0xDEADBEEFDEADBEEF
1070.xword 0xDEADBEEFDEADBEEF
1071.xword 0xDEADBEEFDEADBEEF
1072.xword 0xDEADBEEFDEADBEEF
1073.xword 0xDEADBEEFDEADBEEF
1074.xword 0xDEADBEEFDEADBEEF
1075.xword 0xDEADBEEFDEADBEEF
1076.xword 0xDEADBEEFDEADBEEF
1077.xword 0xDEADBEEFDEADBEEF
1078.xword 0xDEADBEEFDEADBEEF
1079.xword 0xDEADBEEFDEADBEEF
1080.xword 0xDEADBEEFDEADBEEF
1081.xword 0xDEADBEEFDEADBEEF
1082.xword 0xDEADBEEFDEADBEEF
1083.xword 0xDEADBEEFDEADBEEF
1084.xword 0xDEADBEEFDEADBEEF
1085.xword 0xDEADBEEFDEADBEEF
1086.xword 0xDEADBEEFDEADBEEF
1087.xword 0xDEADBEEFDEADBEEF
1088.xword 0xDEADBEEFDEADBEEF
1089.xword 0xDEADBEEFDEADBEEF
1090.xword 0xDEADBEEFDEADBEEF
1091.xword 0xDEADBEEFDEADBEEF
1092.xword 0xDEADBEEFDEADBEEF
1093.xword 0xDEADBEEFDEADBEEF
1094.xword 0xDEADBEEFDEADBEEF
1095.xword 0xDEADBEEFDEADBEEF
1096.xword 0xDEADBEEFDEADBEEF
1097.xword 0xDEADBEEFDEADBEEF
1098.xword 0xDEADBEEFDEADBEEF
1099.xword 0xDEADBEEFDEADBEEF
1100.xword 0xDEADBEEFDEADBEEF
1101.xword 0xDEADBEEFDEADBEEF
1102.xword 0xDEADBEEFDEADBEEF
1103.xword 0xDEADBEEFDEADBEEF
1104.xword 0xDEADBEEFDEADBEEF
1105.xword 0xDEADBEEFDEADBEEF
1106.xword 0xDEADBEEFDEADBEEF
1107.xword 0xDEADBEEFDEADBEEF
1108
1109#if 0
1110#endif