Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / niu / NIU_Tx / tx_MULTI_PORT_DMA_rand.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: tx_MULTI_PORT_DMA_rand.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
40#include "hboot.s"
41#include "niu_defines.h"
42#define FAIR_PKT_CNT (NIU_TX_PKT_CNT / 2)
43
44.text
45.global main
46
47main:
48 ta T_CHANGE_HPRIV
49 nop
50!# 85 "diag.j.pp"
51!
52! Thread 0 Start
53!
54!
55!thread_0:
56
57Init_flow:
58 nop ! $EV trig_pc_d(1, @VA(.MAIN.Init_flow)) -> pktGenConfig(MAC_ID, FRAME_TYPE, FRAME_CLASS, NIU_TX_PKT_LEN_P0, NIU_TX_MULTI_PORT, NIU_TX_PKT_LEN_P1)
59
60P_TxDMAActivate:
61 set MAC_ID, %o0
62 set 0x1, %o1
63 set NIU_TX_MULTI_PORT, %o2
64 set NIU_TX_MULTI_DMA_P0, %o3
65 set NIU_TX_MULTI_DMA_P1, %o4
66 call SetTxDMAActive
67 nop ! $EV trig_pc_d(1, @VA(.MAIN.P_TxDMAActivate)) -> NIU_TxDMAActivate (MAC_ID, 1, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
68
69
70P_AddTxChannels:
71 nop ! $EV trig_pc_d(1, @VA(.MAIN.P_AddTxChannels)) -> NIU_AddTxChannels(MAC_ID, 0, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
72 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
73 nop
74
75P_SetTxMaxBurst:
76 set 0x0, %o0
77 set SetTxMaxBurst_Data, %o1
78 set NIU_TX_MULTI_PORT, %o2
79 set NIU_TX_MULTI_DMA_P0, %o3
80 set NIU_TX_MULTI_DMA_P1, %o4
81 call SetTxMaxBurst
82 nop ! $EV trig_pc_d(1, @VA(.MAIN.P_SetTxMaxBurst)) -> NIU_SetTxMaxBurst (MAC_ID, 0, TxMaxBurst_Data, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
83 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
84 nop
85
86
87
88
89
90
91
92 nop
93 set NIU_TX_MULTI_PORT, %o2
94 set NIU_TX_MULTI_DMA_P0, %o3
95 set NIU_TX_MULTI_DMA_P1, %o4
96 call InitTxDma
97 nop
98 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
99 nop
100
101Gen_Packet:
102 nop ! $EV trig_pc_d(1, @VA(.MAIN.Gen_Packet)) -> TxPktGen(MAC_ID, 0, NIU_TX_PKT_CNT, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
103 nop
104
105 set 0x5, %g4
106delay_loop_tmp:
107 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
108 nop
109 nop
110 nop
111 nop
112 dec %g4
113 brnz %g4, delay_loop_tmp
114 nop
115
116!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
117! Find out if DMA0 should be kicked for Port0
118!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
119 set 0x1, %g2
120 set NIU_TX_MULTI_DMA_P0, %g5
121 and %g5, %g2, %g6
122 brz %g6, CHECK_P0_DMA1
123 nop
124
125SetTxRingKick_P0_0:
126 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_0)) -> NIU_SetTxRingKick(0, 0, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
127 set 0x0, %o0
128 ldx [%g2] , %g3
129 nop
130 mulx %o0, 0x200, %g5
131 setx TX_RING_KICK_Addr, %g1, %g2
132 add %g2, %g5, %g2
133 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
134 nop
135
136SetTxCs_P0_0:
137 set 0x0, %o0
138 setx TX_CS_Data, %g1, %g3
139 mulx %o0, 0x200, %g5
140 setx TX_CS_Addr, %g1, %g2
141 add %g2, %g5, %g2
142 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
143 nop
144!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
145! Find out if DMA1 should be kicked for Port0
146!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
147CHECK_P0_DMA1:
148 set 0x2, %g2
149 set NIU_TX_MULTI_DMA_P0, %g5
150 and %g5, %g2, %g6
151 brz %g6, CHECK_P0_DMA2
152 nop
153
154SetTxRingKick_P0_1:
155 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_1)) -> NIU_SetTxRingKick(0, 1, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
156 set 0x1, %o0
157 ldx [%g2] , %g3
158 nop
159 mulx %o0, 0x200, %g5
160 setx TX_RING_KICK_Addr, %g1, %g2
161 add %g2, %g5, %g2
162 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
163 nop
164
165SetTxCs_P0_1:
166 set 0x1, %o0
167 setx TX_CS_Data, %g1, %g3
168 mulx %o0, 0x200, %g5
169 setx TX_CS_Addr, %g1, %g2
170 add %g2, %g5, %g2
171 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
172 nop
173!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
174! Find out if DMA2 should be kicked for Port0
175!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
176CHECK_P0_DMA2:
177 set 0x4, %g2
178 set NIU_TX_MULTI_DMA_P0, %g5
179 and %g5, %g2, %g6
180 brz %g6, CHECK_P0_DMA3
181 nop
182
183SetTxRingKick_P0_2:
184 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_2)) -> NIU_SetTxRingKick(0, 2, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
185 set 0x2, %o0
186 ldx [%g2] , %g3
187 nop
188 mulx %o0, 0x200, %g5
189 setx TX_RING_KICK_Addr, %g1, %g2
190 add %g2, %g5, %g2
191 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
192 nop
193
194SetTxCs_P0_2:
195 set 0x2, %o0
196 setx TX_CS_Data, %g1, %g3
197 mulx %o0, 0x200, %g5
198 setx TX_CS_Addr, %g1, %g2
199 add %g2, %g5, %g2
200 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
201 nop
202!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
203! Find out if DMA3 should be kicked for Port0
204!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
205CHECK_P0_DMA3:
206 set 0x8, %g2
207 set NIU_TX_MULTI_DMA_P0, %g5
208 and %g5, %g2, %g6
209 brz %g6, CHECK_P0_DMA4
210 nop
211
212SetTxRingKick_P0_3:
213 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_3)) -> NIU_SetTxRingKick(0, 3, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
214 set 0x3, %o0
215 ldx [%g2] , %g3
216 nop
217 mulx %o0, 0x200, %g5
218 setx TX_RING_KICK_Addr, %g1, %g2
219 add %g2, %g5, %g2
220 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
221 nop
222
223SetTxCs_P0_3:
224 set 0x3, %o0
225 setx TX_CS_Data, %g1, %g3
226 mulx %o0, 0x200, %g5
227 setx TX_CS_Addr, %g1, %g2
228 add %g2, %g5, %g2
229 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
230 nop
231!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
232! Find out if DMA4 should be kicked for Port0
233!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
234CHECK_P0_DMA4:
235 set 0x10, %g2
236 set NIU_TX_MULTI_DMA_P0, %g5
237 and %g5, %g2, %g6
238 brz %g6, CHECK_P0_DMA5
239 nop
240
241SetTxRingKick_P0_4:
242 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_4)) -> NIU_SetTxRingKick(0, 4, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
243 set 0x4, %o0
244 ldx [%g2] , %g3
245 nop
246 mulx %o0, 0x200, %g5
247 setx TX_RING_KICK_Addr, %g1, %g2
248 add %g2, %g5, %g2
249 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
250 nop
251
252SetTxCs_P0_4:
253 set 0x4, %o0
254 setx TX_CS_Data, %g1, %g3
255 mulx %o0, 0x200, %g5
256 setx TX_CS_Addr, %g1, %g2
257 add %g2, %g5, %g2
258 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
259 nop
260!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
261! Find out if DMA5 should be kicked for Port0
262!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
263CHECK_P0_DMA5:
264 set 0x20, %g2
265 set NIU_TX_MULTI_DMA_P0, %g5
266 and %g5, %g2, %g6
267 brz %g6, CHECK_P0_DMA6
268 nop
269
270SetTxRingKick_P0_5:
271 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_5)) -> NIU_SetTxRingKick(0, 5, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
272 set 0x5, %o0
273 ldx [%g2] , %g3
274 nop
275 mulx %o0, 0x200, %g5
276 setx TX_RING_KICK_Addr, %g1, %g2
277 add %g2, %g5, %g2
278 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
279 nop
280
281SetTxCs_P0_5:
282 set 0x5, %o0
283 setx TX_CS_Data, %g1, %g3
284 mulx %o0, 0x200, %g5
285 setx TX_CS_Addr, %g1, %g2
286 add %g2, %g5, %g2
287 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
288 nop
289!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
290! Find out if DMA6 should be kicked for Port0
291!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
292CHECK_P0_DMA6:
293 set 0x40, %g2
294 set NIU_TX_MULTI_DMA_P0, %g5
295 and %g5, %g2, %g6
296 brz %g6, CHECK_P0_DMA7
297 nop
298
299SetTxRingKick_P0_6:
300 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_6)) -> NIU_SetTxRingKick(0, 6, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
301 set 0x6, %o0
302 ldx [%g2] , %g3
303 nop
304 mulx %o0, 0x200, %g5
305 setx TX_RING_KICK_Addr, %g1, %g2
306 add %g2, %g5, %g2
307 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
308 nop
309
310SetTxCs_P0_6:
311 set 0x6, %o0
312 setx TX_CS_Data, %g1, %g3
313 mulx %o0, 0x200, %g5
314 setx TX_CS_Addr, %g1, %g2
315 add %g2, %g5, %g2
316 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
317 nop
318!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
319! Find out if DMA7 should be kicked for Port0
320!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
321CHECK_P0_DMA7:
322 set 0x80, %g2
323 set NIU_TX_MULTI_DMA_P0, %g5
324 and %g5, %g2, %g6
325 brz %g6, CHECK_P0_DMA8
326 nop
327
328SetTxRingKick_P0_7:
329 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_7)) -> NIU_SetTxRingKick(0, 7, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
330 set 0x7, %o0
331 ldx [%g2] , %g3
332 nop
333 mulx %o0, 0x200, %g5
334 setx TX_RING_KICK_Addr, %g1, %g2
335 add %g2, %g5, %g2
336 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
337 nop
338
339SetTxCs_P0_7:
340 set 0x7, %o0
341 setx TX_CS_Data, %g1, %g3
342 mulx %o0, 0x200, %g5
343 setx TX_CS_Addr, %g1, %g2
344 add %g2, %g5, %g2
345 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
346 nop
347!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
348! Find out if DMA8 should be kicked for Port0
349!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
350CHECK_P0_DMA8:
351 set 0x100, %g2
352 set NIU_TX_MULTI_DMA_P0, %g5
353 and %g5, %g2, %g6
354 brz %g6, CHECK_P0_DMA9
355 nop
356
357SetTxRingKick_P0_8:
358 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_8)) -> NIU_SetTxRingKick(0, 8, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
359 set 0x8, %o0
360 ldx [%g2] , %g3
361 nop
362 mulx %o0, 0x200, %g5
363 setx TX_RING_KICK_Addr, %g1, %g2
364 add %g2, %g5, %g2
365 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
366 nop
367
368SetTxCs_P0_8:
369 set 0x8, %o0
370 setx TX_CS_Data, %g1, %g3
371 mulx %o0, 0x200, %g5
372 setx TX_CS_Addr, %g1, %g2
373 add %g2, %g5, %g2
374 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
375 nop
376!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
377! Find out if DMA9 should be kicked for Port0
378!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
379CHECK_P0_DMA9:
380 set 0x200, %g2
381 set NIU_TX_MULTI_DMA_P0, %g5
382 and %g5, %g2, %g6
383 brz %g6, CHECK_P0_DMA10
384 nop
385
386SetTxRingKick_P0_9:
387 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_9)) -> NIU_SetTxRingKick(0, 9, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
388 set 0x9, %o0
389 ldx [%g2] , %g3
390 nop
391 mulx %o0, 0x200, %g5
392 setx TX_RING_KICK_Addr, %g1, %g2
393 add %g2, %g5, %g2
394 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
395 nop
396
397SetTxCs_P0_9:
398 set 0x9, %o0
399 setx TX_CS_Data, %g1, %g3
400 mulx %o0, 0x200, %g5
401 setx TX_CS_Addr, %g1, %g2
402 add %g2, %g5, %g2
403 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
404 nop
405!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
406! Find out if DMA10 should be kicked for Port0
407!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
408CHECK_P0_DMA10:
409 set 0x400, %g2
410 set NIU_TX_MULTI_DMA_P0, %g5
411 and %g5, %g2, %g6
412 brz %g6, CHECK_P0_DMA11
413 nop
414
415SetTxRingKick_P0_10:
416 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_10)) -> NIU_SetTxRingKick(0, a, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
417 set 0xa, %o0
418 ldx [%g2] , %g3
419 nop
420 mulx %o0, 0x200, %g5
421 setx TX_RING_KICK_Addr, %g1, %g2
422 add %g2, %g5, %g2
423 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
424 nop
425
426SetTxCs_P0_10:
427 set 0xa, %o0
428 setx TX_CS_Data, %g1, %g3
429 mulx %o0, 0x200, %g5
430 setx TX_CS_Addr, %g1, %g2
431 add %g2, %g5, %g2
432 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
433 nop
434!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
435! Find out if DMA11 should be kicked for Port0
436!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
437CHECK_P0_DMA11:
438 set 0x800, %g2
439 set NIU_TX_MULTI_DMA_P0, %g5
440 and %g5, %g2, %g6
441 brz %g6, CHECK_P0_DMA12
442 nop
443
444SetTxRingKick_P0_11:
445 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_11)) -> NIU_SetTxRingKick(0, b, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
446 set 0xb, %o0
447 ldx [%g2] , %g3
448 nop
449 mulx %o0, 0x200, %g5
450 setx TX_RING_KICK_Addr, %g1, %g2
451 add %g2, %g5, %g2
452 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
453 nop
454
455SetTxCs_P0_11:
456 set 0xb, %o0
457 setx TX_CS_Data, %g1, %g3
458 mulx %o0, 0x200, %g5
459 setx TX_CS_Addr, %g1, %g2
460 add %g2, %g5, %g2
461 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
462 nop
463!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
464! Find out if DMA12 should be kicked for Port0
465!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
466CHECK_P0_DMA12:
467 set 0x1000, %g2
468 set NIU_TX_MULTI_DMA_P0, %g5
469 and %g5, %g2, %g6
470 brz %g6, CHECK_P0_DMA13
471 nop
472
473SetTxRingKick_P0_12:
474 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_12)) -> NIU_SetTxRingKick(0, c, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
475 set 0xc, %o0
476 ldx [%g2] , %g3
477 nop
478 mulx %o0, 0x200, %g5
479 setx TX_RING_KICK_Addr, %g1, %g2
480 add %g2, %g5, %g2
481 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
482 nop
483
484SetTxCs_P0_12:
485 set 0xc, %o0
486 setx TX_CS_Data, %g1, %g3
487 mulx %o0, 0x200, %g5
488 setx TX_CS_Addr, %g1, %g2
489 add %g2, %g5, %g2
490 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
491 nop
492!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
493! Find out if DMA13 should be kicked for Port0
494!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
495CHECK_P0_DMA13:
496 set 0x2000, %g2
497 set NIU_TX_MULTI_DMA_P0, %g5
498 and %g5, %g2, %g6
499 and %g5, %g2, %g6
500 brz %g6, CHECK_P0_DMA14
501 nop
502
503SetTxRingKick_P0_13:
504 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_13)) -> NIU_SetTxRingKick(0, d, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
505 set 0xd, %o0
506 ldx [%g2] , %g3
507 nop
508 mulx %o0, 0x200, %g5
509 setx TX_RING_KICK_Addr, %g1, %g2
510 add %g2, %g5, %g2
511 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
512 nop
513
514SetTxCs_P0_13:
515 set 0xd, %o0
516 setx TX_CS_Data, %g1, %g3
517 mulx %o0, 0x200, %g5
518 setx TX_CS_Addr, %g1, %g2
519 add %g2, %g5, %g2
520 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
521 nop
522!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
523! Find out if DMA14 should be kicked for Port0
524!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
525CHECK_P0_DMA14:
526 set 0x4000, %g2
527 set NIU_TX_MULTI_DMA_P0, %g5
528 and %g5, %g2, %g6
529 and %g5, %g2, %g6
530 brz %g6, CHECK_P0_DMA15
531 nop
532
533SetTxRingKick_P0_14:
534 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_14)) -> NIU_SetTxRingKick(0, e, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
535 set 0xe, %o0
536 ldx [%g2] , %g3
537 nop
538 mulx %o0, 0x200, %g5
539 setx TX_RING_KICK_Addr, %g1, %g2
540 add %g2, %g5, %g2
541 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
542 nop
543
544SetTxCs_P0_14:
545 set 0xe, %o0
546 setx TX_CS_Data, %g1, %g3
547 mulx %o0, 0x200, %g5
548 setx TX_CS_Addr, %g1, %g2
549 add %g2, %g5, %g2
550 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
551 nop
552!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
553! Find out if DMA15 should be kicked for Port0
554!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
555CHECK_P0_DMA15:
556 set 0x8000, %g2
557 set NIU_TX_MULTI_DMA_P0, %g5
558 and %g5, %g2, %g6
559 brz %g6, CHECK_P1_DMA0
560 nop
561
562SetTxRingKick_P0_15:
563 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P0_15)) -> NIU_SetTxRingKick(0, f, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
564 set 0xf, %o0
565 ldx [%g2] , %g3
566 nop
567 mulx %o0, 0x200, %g5
568 setx TX_RING_KICK_Addr, %g1, %g2
569 add %g2, %g5, %g2
570 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
571 nop
572
573SetTxCs_P0_15:
574 set 0xf, %o0
575 setx TX_CS_Data, %g1, %g3
576 mulx %o0, 0x200, %g5
577 setx TX_CS_Addr, %g1, %g2
578 add %g2, %g5, %g2
579 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
580 nop
581!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
582!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
583! Find out if DMA0 should be kicked for Port1
584!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
585CHECK_P1_DMA0:
586 set 0x1, %g2
587 set NIU_TX_MULTI_DMA_P1, %g5
588 and %g5, %g2, %g6
589 brz %g6, CHECK_P1_DMA1
590 nop
591
592SetTxRingKick_P1_0:
593 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_0)) -> NIU_SetTxRingKick(1, 0, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
594 set 0x0, %o0
595 ldx [%g2] , %g3
596 nop
597 mulx %o0, 0x200, %g5
598 setx TX_RING_KICK_Addr, %g1, %g2
599 add %g2, %g5, %g2
600 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
601 nop
602
603SetTxCs_P1_0:
604 set 0x0, %o0
605 setx TX_CS_Data, %g1, %g3
606 mulx %o0, 0x200, %g5
607 setx TX_CS_Addr, %g1, %g2
608 add %g2, %g5, %g2
609 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
610 nop
611!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
612! Find out if DMA1 should be kicked for Port1
613!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
614CHECK_P1_DMA1:
615 set 0x2, %g2
616 set NIU_TX_MULTI_DMA_P1, %g5
617 and %g5, %g2, %g6
618 brz %g6, CHECK_P1_DMA2
619 nop
620
621SetTxRingKick_P1_1:
622 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_1)) -> NIU_SetTxRingKick(1, 1, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
623 set 0x1, %o0
624 ldx [%g2] , %g3
625 nop
626 mulx %o0, 0x200, %g5
627 setx TX_RING_KICK_Addr, %g1, %g2
628 add %g2, %g5, %g2
629 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
630 nop
631
632SetTxCs_P1_1:
633 set 0x1, %o0
634 setx TX_CS_Data, %g1, %g3
635 mulx %o0, 0x200, %g5
636 setx TX_CS_Addr, %g1, %g2
637 add %g2, %g5, %g2
638 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
639 nop
640!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
641! Find out if DMA2 should be kicked for Port1
642!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
643CHECK_P1_DMA2:
644 set 0x4, %g2
645 set NIU_TX_MULTI_DMA_P1, %g5
646 and %g5, %g2, %g6
647 brz %g6, CHECK_P1_DMA3
648 nop
649
650SetTxRingKick_P1_2:
651 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_2)) -> NIU_SetTxRingKick(1, 2, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
652 set 0x2, %o0
653 ldx [%g2] , %g3
654 nop
655 mulx %o0, 0x200, %g5
656 setx TX_RING_KICK_Addr, %g1, %g2
657 add %g2, %g5, %g2
658 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
659 nop
660
661SetTxCs_P1_2:
662 set 0x2, %o0
663 setx TX_CS_Data, %g1, %g3
664 mulx %o0, 0x200, %g5
665 setx TX_CS_Addr, %g1, %g2
666 add %g2, %g5, %g2
667 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
668 nop
669!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
670! Find out if DMA3 should be kicked for Port1
671!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
672CHECK_P1_DMA3:
673 set 0x8, %g2
674 set NIU_TX_MULTI_DMA_P1, %g5
675 and %g5, %g2, %g6
676 brz %g6, CHECK_P1_DMA4
677 nop
678
679SetTxRingKick_P1_3:
680 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_3)) -> NIU_SetTxRingKick(1, 3, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
681 set 0x3, %o0
682 ldx [%g2] , %g3
683 nop
684 mulx %o0, 0x200, %g5
685 setx TX_RING_KICK_Addr, %g1, %g2
686 add %g2, %g5, %g2
687 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
688 nop
689
690SetTxCs_P1_3:
691 set 0x3, %o0
692 setx TX_CS_Data, %g1, %g3
693 mulx %o0, 0x200, %g5
694 setx TX_CS_Addr, %g1, %g2
695 add %g2, %g5, %g2
696 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
697 nop
698!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
699! Find out if DMA4 should be kicked for Port1
700!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
701CHECK_P1_DMA4:
702 set 0x10, %g2
703 set NIU_TX_MULTI_DMA_P1, %g5
704 and %g5, %g2, %g6
705 brz %g6, CHECK_P1_DMA5
706 nop
707
708SetTxRingKick_P1_4:
709 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_4)) -> NIU_SetTxRingKick(1, 4, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
710 set 0x4, %o0
711 ldx [%g2] , %g3
712 nop
713 mulx %o0, 0x200, %g5
714 setx TX_RING_KICK_Addr, %g1, %g2
715 add %g2, %g5, %g2
716 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
717 nop
718
719SetTxCs_P1_4:
720 set 0x4, %o0
721 setx TX_CS_Data, %g1, %g3
722 mulx %o0, 0x200, %g5
723 setx TX_CS_Addr, %g1, %g2
724 add %g2, %g5, %g2
725 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
726 nop
727!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
728! Find out if DMA5 should be kicked for Port1
729!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
730CHECK_P1_DMA5:
731 set 0x20, %g2
732 set NIU_TX_MULTI_DMA_P1, %g5
733 and %g5, %g2, %g6
734 brz %g6, CHECK_P1_DMA6
735 nop
736
737SetTxRingKick_P1_5:
738 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_5)) -> NIU_SetTxRingKick(1, 5, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
739 set 0x5, %o0
740 ldx [%g2] , %g3
741 nop
742 mulx %o0, 0x200, %g5
743 setx TX_RING_KICK_Addr, %g1, %g2
744 add %g2, %g5, %g2
745 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
746 nop
747
748SetTxCs_P1_5:
749 set 0x5, %o0
750 setx TX_CS_Data, %g1, %g3
751 mulx %o0, 0x200, %g5
752 setx TX_CS_Addr, %g1, %g2
753 add %g2, %g5, %g2
754 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
755 nop
756!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
757! Find out if DMA6 should be kicked for Port1
758!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
759CHECK_P1_DMA6:
760 set 0x40, %g2
761 set NIU_TX_MULTI_DMA_P1, %g5
762 and %g5, %g2, %g6
763 brz %g6, CHECK_P1_DMA7
764 nop
765
766SetTxRingKick_P1_6:
767 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_6)) -> NIU_SetTxRingKick(1, 6, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
768 set 0x6, %o0
769 ldx [%g2] , %g3
770 nop
771 mulx %o0, 0x200, %g5
772 setx TX_RING_KICK_Addr, %g1, %g2
773 add %g2, %g5, %g2
774 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
775 nop
776
777SetTxCs_P1_6:
778 set 0x6, %o0
779 setx TX_CS_Data, %g1, %g3
780 mulx %o0, 0x200, %g5
781 setx TX_CS_Addr, %g1, %g2
782 add %g2, %g5, %g2
783 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
784 nop
785!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
786! Find out if DMA7 should be kicked for Port1
787!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
788CHECK_P1_DMA7:
789 set 0x80, %g2
790 set NIU_TX_MULTI_DMA_P1, %g5
791 and %g5, %g2, %g6
792 brz %g6, CHECK_P1_DMA8
793 nop
794
795SetTxRingKick_P1_7:
796 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_7)) -> NIU_SetTxRingKick(1, 7, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
797 set 0x7, %o0
798 ldx [%g2] , %g3
799 nop
800 mulx %o0, 0x200, %g5
801 setx TX_RING_KICK_Addr, %g1, %g2
802 add %g2, %g5, %g2
803 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
804 nop
805
806SetTxCs_P1_7:
807 set 0x7, %o0
808 setx TX_CS_Data, %g1, %g3
809 mulx %o0, 0x200, %g5
810 setx TX_CS_Addr, %g1, %g2
811 add %g2, %g5, %g2
812 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
813 nop
814!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
815! Find out if DMA8 should be kicked for Port1
816!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
817CHECK_P1_DMA8:
818 set 0x100, %g2
819 set NIU_TX_MULTI_DMA_P1, %g5
820 and %g5, %g2, %g6
821 brz %g6, CHECK_P1_DMA9
822 nop
823
824SetTxRingKick_P1_8:
825 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_8)) -> NIU_SetTxRingKick(1, 8, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
826 set 0x8, %o0
827 ldx [%g2] , %g3
828 nop
829 mulx %o0, 0x200, %g5
830 setx TX_RING_KICK_Addr, %g1, %g2
831 add %g2, %g5, %g2
832 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
833 nop
834
835SetTxCs_P1_8:
836 set 0x8, %o0
837 setx TX_CS_Data, %g1, %g3
838 mulx %o0, 0x200, %g5
839 setx TX_CS_Addr, %g1, %g2
840 add %g2, %g5, %g2
841 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
842 nop
843!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
844! Find out if DMA9 should be kicked for Port1
845!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
846CHECK_P1_DMA9:
847 set 0x200, %g2
848 set NIU_TX_MULTI_DMA_P1, %g5
849 and %g5, %g2, %g6
850 brz %g6, CHECK_P1_DMA10
851 nop
852
853SetTxRingKick_P1_9:
854 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_9)) -> NIU_SetTxRingKick(1, 9, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
855 set 0x9, %o0
856 ldx [%g2] , %g3
857 nop
858 mulx %o0, 0x200, %g5
859 setx TX_RING_KICK_Addr, %g1, %g2
860 add %g2, %g5, %g2
861 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
862 nop
863
864SetTxCs_P1_9:
865 set 0x9, %o0
866 setx TX_CS_Data, %g1, %g3
867 mulx %o0, 0x200, %g5
868 setx TX_CS_Addr, %g1, %g2
869 add %g2, %g5, %g2
870 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
871 nop
872!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
873! Find out if DMA10 should be kicked for Port1
874!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
875CHECK_P1_DMA10:
876 set 0x400, %g2
877 set NIU_TX_MULTI_DMA_P1, %g5
878 and %g5, %g2, %g6
879 brz %g6, CHECK_P1_DMA11
880 nop
881
882SetTxRingKick_P1_10:
883 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_10)) -> NIU_SetTxRingKick(1, a, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
884 set 0xa, %o0
885 ldx [%g2] , %g3
886 nop
887 mulx %o0, 0x200, %g5
888 setx TX_RING_KICK_Addr, %g1, %g2
889 add %g2, %g5, %g2
890 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
891 nop
892
893SetTxCs_P1_10:
894 set 0xa, %o0
895 setx TX_CS_Data, %g1, %g3
896 mulx %o0, 0x200, %g5
897 setx TX_CS_Addr, %g1, %g2
898 add %g2, %g5, %g2
899 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
900 nop
901!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
902! Find out if DMA11 should be kicked for Port1
903!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
904CHECK_P1_DMA11:
905 set 0x800, %g2
906 set NIU_TX_MULTI_DMA_P1, %g5
907 and %g5, %g2, %g6
908 brz %g6, CHECK_P1_DMA12
909 nop
910
911SetTxRingKick_P1_11:
912 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_11)) -> NIU_SetTxRingKick(1, b, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
913 set 0xb, %o0
914 ldx [%g2] , %g3
915 nop
916 mulx %o0, 0x200, %g5
917 setx TX_RING_KICK_Addr, %g1, %g2
918 add %g2, %g5, %g2
919 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
920 nop
921
922SetTxCs_P1_11:
923 set 0xb, %o0
924 setx TX_CS_Data, %g1, %g3
925 mulx %o0, 0x200, %g5
926 setx TX_CS_Addr, %g1, %g2
927 add %g2, %g5, %g2
928 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
929 nop
930!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
931! Find out if DMA12 should be kicked for Port1
932!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
933CHECK_P1_DMA12:
934 set 0x1000, %g2
935 set NIU_TX_MULTI_DMA_P1, %g5
936 and %g5, %g2, %g6
937 brz %g6, CHECK_P1_DMA13
938 nop
939
940SetTxRingKick_P1_12:
941 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_12)) -> NIU_SetTxRingKick(1, c, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
942 set 0xc, %o0
943 ldx [%g2] , %g3
944 nop
945 mulx %o0, 0x200, %g5
946 setx TX_RING_KICK_Addr, %g1, %g2
947 add %g2, %g5, %g2
948 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
949 nop
950
951SetTxCs_P1_12:
952 set 0xc, %o0
953 setx TX_CS_Data, %g1, %g3
954 mulx %o0, 0x200, %g5
955 setx TX_CS_Addr, %g1, %g2
956 add %g2, %g5, %g2
957 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
958 nop
959!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
960! Find out if DMA13 should be kicked for Port1
961!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
962CHECK_P1_DMA13:
963 set 0x2000, %g2
964 set NIU_TX_MULTI_DMA_P1, %g5
965 and %g5, %g2, %g6
966 brz %g6, CHECK_P1_DMA14
967 nop
968
969SetTxRingKick_P1_13:
970 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_13)) -> NIU_SetTxRingKick(1, d, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
971 set 0xd, %o0
972 ldx [%g2] , %g3
973 nop
974 mulx %o0, 0x200, %g5
975 setx TX_RING_KICK_Addr, %g1, %g2
976 add %g2, %g5, %g2
977 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
978 nop
979
980SetTxCs_P1_13:
981 set 0xd, %o0
982 setx TX_CS_Data, %g1, %g3
983 mulx %o0, 0x200, %g5
984 setx TX_CS_Addr, %g1, %g2
985 add %g2, %g5, %g2
986 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
987 nop
988!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
989! Find out if DMA14 should be kicked for Port1
990!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
991CHECK_P1_DMA14:
992 set 0x4000, %g2
993 set NIU_TX_MULTI_DMA_P1, %g5
994 and %g5, %g2, %g6
995 brz %g6, CHECK_P1_DMA15
996 nop
997
998SetTxRingKick_P1_14:
999 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_14)) -> NIU_SetTxRingKick(1, e, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
1000 set 0xe, %o0
1001 ldx [%g2] , %g3
1002 nop
1003 mulx %o0, 0x200, %g5
1004 setx TX_RING_KICK_Addr, %g1, %g2
1005 add %g2, %g5, %g2
1006 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
1007 nop
1008
1009SetTxCs_P1_14:
1010 set 0xe, %o0
1011 setx TX_CS_Data, %g1, %g3
1012 mulx %o0, 0x200, %g5
1013 setx TX_CS_Addr, %g1, %g2
1014 add %g2, %g5, %g2
1015 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
1016 nop
1017!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1018! Find out if DMA15 should be kicked for Port1
1019!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1020CHECK_P1_DMA15:
1021 set 0x8000, %g2
1022 set NIU_TX_MULTI_DMA_P1, %g5
1023 and %g5, %g2, %g6
1024 brz %g6, DONE_CHECK_KICK_DMA
1025 nop
1026
1027SetTxRingKick_P1_15:
1028 setx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %g1, %g2 ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick_P1_15)) -> NIU_SetTxRingKick(1, f, NIU_TX_MULTI_PORT, NIU_TX_MULTI_DMA_P0, NIU_TX_MULTI_DMA_P1)
1029 set 0xf, %o0
1030 ldx [%g2] , %g3
1031 nop
1032 mulx %o0, 0x200, %g5
1033 setx TX_RING_KICK_Addr, %g1, %g2
1034 add %g2, %g5, %g2
1035 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
1036 nop
1037
1038SetTxCs_P1_15:
1039 set 0xf, %o0
1040 setx TX_CS_Data, %g1, %g3
1041 mulx %o0, 0x200, %g5
1042 setx TX_CS_Addr, %g1, %g2
1043 add %g2, %g5, %g2
1044 stxa %g3, [%g2]ASI_PRIMARY_LITTLE
1045 nop
1046DONE_CHECK_KICK_DMA:
1047#ifdef JUMBO_FRAME_EN
1048 set loop_count, %g4
1049delay_loop:
1050 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
1051 nop
1052 nop
1053 nop
1054 nop
1055 dec %g4
1056 brnz %g4, delay_loop
1057 nop
1058#endif
1059
1060 set 0xffff, %g3
1061 set NIU_TX_MULTI_DMA_P0, %g5
1062 and %g5, %g3, %g6
1063 brz %g6, NIUTx_Pkt_Cnt_Chk_P1
1064 nop
1065NIUTx_Pkt_Cnt_Chk_P0:
1066 set 0x0, %o0 ! MAC PORT
1067 set FAIR_PKT_CNT, %o1 ! PKT CNT
1068 call NiuTx_check_pkt_cnt
1069 nop
1070
1071 set loop_count, %g4
1072delay_loop_end_p0:
1073 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
1074 nop
1075 nop
1076 nop
1077 nop
1078 dec %g4
1079 brnz %g4, delay_loop_end_p0
1080 nop
1081
1082 set 0xffff, %g3
1083 set NIU_TX_MULTI_DMA_P1, %g5
1084 and %g5, %g3, %g6
1085 brz %g6, Done_Pkt_Chk
1086 nop
1087NIUTx_Pkt_Cnt_Chk_P1:
1088 set 0x1, %o0 ! MAC PORT
1089 set FAIR_PKT_CNT, %o1 ! PKT CNT
1090 call NiuTx_check_pkt_cnt
1091 nop
1092
1093 set loop_count, %g4
1094delay_loop_end_p1:
1095 ldxa [%g2]ASI_PRIMARY_LITTLE, %g5
1096 nop
1097 nop
1098 nop
1099 nop
1100 dec %g4
1101 brnz %g4, delay_loop_end_p1
1102 nop
1103Done_Pkt_Chk:
1104test_passed:
1105 nop ! $EV trig_pc_d(1, @VA(.MAIN.test_passed)) -> NIU_EXIT_chk(0)
1106 nop ! $EV trig_pc_d(1, @VA(.MAIN.test_passed)) -> NIU_EXIT_chk(1)
1107 EXIT_GOOD
1108
1109
1110/************************************************************************
1111 Test case data start
1112************************************************************************/
1113SECTION SetRngConfig_init data_va=0x100000000
1114attr_data {
1115 Name = SetRngConfig_init,
1116 hypervisor,
1117 compressimage
1118 }
1119.data
1120SetRngConfig_init:
1121 .xword 0x0060452301000484
1122
1123SECTION SetTxRingKick_init data_va=0x100000100
1124attr_data {
1125 Name = SetTxRingKick_init,
1126 hypervisor,
1127 compressimage
1128 }
1129.data
1130SetTxRingKick_init:
1131 .xword 0x0060452301000484
1132
1133SECTION SetTxLPMask1_init data_va=0x100000200
1134attr_data {
1135 Name = SetTxLPMask1_init,
1136 hypervisor,
1137 compressimage
1138 }
1139.data
1140SetTxLPMask1_init:
1141 .xword 0x0060452301000484
1142
1143SECTION SetTxLPValue1_init data_va=0x100000300
1144attr_data {
1145 Name = SetTxLPValue1_init,
1146 hypervisor,
1147 compressimage
1148 }
1149.data
1150SetTxLPValue1_init:
1151 .xword 0x0060452301000484
1152
1153SECTION SetTxLPRELOC1_init data_va=0x100000400
1154attr_data {
1155 Name = SetTxLPRELOC1_init,
1156 hypervisor,
1157 compressimage
1158 }
1159.data
1160SetTxLPRELOC1_init:
1161 .xword 0x0060452301000484
1162SECTION SetTxLPMask2_init data_va=0x100000500
1163attr_data {
1164 Name = SetTxLPMask2_init,
1165 hypervisor,
1166 compressimage
1167 }
1168.data
1169SetTxLPMask2_init:
1170 .xword 0x0060452301000484
1171SECTION SetTxLPValue2_init data_va=0x100000600
1172attr_data {
1173 Name = SetTxLPValue2_init,
1174 hypervisor,
1175 compressimage
1176 }
1177.data
1178SetTxLPValue2_init:
1179 .xword 0x0060452301000484
1180
1181SECTION SetTxLPRELOC2_init data_va=0x100000700
1182attr_data {
1183 Name = SetTxLPRELOC2_init,
1184 hypervisor,
1185 compressimage
1186 }
1187.data
1188SetTxLPRELOC2_init:
1189 .xword 0x0060452301000484
1190
1191SECTION SetTxLPValid_init data_va=0x100000800
1192attr_data {
1193 Name = SetTxLPValid_init,
1194 hypervisor,
1195 compressimage
1196 }
1197.data
1198SetTxLPValid_init:
1199 .xword 0x0060452301000484
1200!# 315 "diag.j.pp"
1201
1202#if 0
1203#endif