Commit | Line | Data |
---|---|---|
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 | ||
47 | main: | |
48 | ta T_CHANGE_HPRIV | |
49 | nop | |
50 | !# 85 "diag.j.pp" | |
51 | ! | |
52 | ! Thread 0 Start | |
53 | ! | |
54 | ! | |
55 | !thread_0: | |
56 | ||
57 | Init_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 | ||
60 | P_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 | ||
70 | P_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 | ||
75 | P_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 | ||
101 | Gen_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 | |
106 | delay_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 | ||
125 | SetTxRingKick_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 | ||
136 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
147 | CHECK_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 | ||
154 | SetTxRingKick_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 | ||
165 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
176 | CHECK_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 | ||
183 | SetTxRingKick_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 | ||
194 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
205 | CHECK_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 | ||
212 | SetTxRingKick_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 | ||
223 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
234 | CHECK_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 | ||
241 | SetTxRingKick_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 | ||
252 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
263 | CHECK_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 | ||
270 | SetTxRingKick_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 | ||
281 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
292 | CHECK_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 | ||
299 | SetTxRingKick_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 | ||
310 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
321 | CHECK_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 | ||
328 | SetTxRingKick_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 | ||
339 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
350 | CHECK_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 | ||
357 | SetTxRingKick_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 | ||
368 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
379 | CHECK_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 | ||
386 | SetTxRingKick_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 | ||
397 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
408 | CHECK_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 | ||
415 | SetTxRingKick_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 | ||
426 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
437 | CHECK_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 | ||
444 | SetTxRingKick_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 | ||
455 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
466 | CHECK_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 | ||
473 | SetTxRingKick_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 | ||
484 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
495 | CHECK_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 | ||
503 | SetTxRingKick_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 | ||
514 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
525 | CHECK_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 | ||
533 | SetTxRingKick_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 | ||
544 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
555 | CHECK_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 | ||
562 | SetTxRingKick_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 | ||
573 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
585 | CHECK_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 | ||
592 | SetTxRingKick_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 | ||
603 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
614 | CHECK_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 | ||
621 | SetTxRingKick_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 | ||
632 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
643 | CHECK_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 | ||
650 | SetTxRingKick_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 | ||
661 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
672 | CHECK_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 | ||
679 | SetTxRingKick_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 | ||
690 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
701 | CHECK_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 | ||
708 | SetTxRingKick_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 | ||
719 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
730 | CHECK_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 | ||
737 | SetTxRingKick_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 | ||
748 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
759 | CHECK_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 | ||
766 | SetTxRingKick_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 | ||
777 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
788 | CHECK_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 | ||
795 | SetTxRingKick_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 | ||
806 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
817 | CHECK_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 | ||
824 | SetTxRingKick_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 | ||
835 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
846 | CHECK_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 | ||
853 | SetTxRingKick_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 | ||
864 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
875 | CHECK_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 | ||
882 | SetTxRingKick_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 | ||
893 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
904 | CHECK_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 | ||
911 | SetTxRingKick_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 | ||
922 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
933 | CHECK_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 | ||
940 | SetTxRingKick_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 | ||
951 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
962 | CHECK_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 | ||
969 | SetTxRingKick_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 | ||
980 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
991 | CHECK_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 | ||
998 | SetTxRingKick_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 | ||
1009 | SetTxCs_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 | !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1020 | CHECK_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 | ||
1027 | SetTxRingKick_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 | ||
1038 | SetTxCs_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 | |
1046 | DONE_CHECK_KICK_DMA: | |
1047 | #ifdef JUMBO_FRAME_EN | |
1048 | set loop_count, %g4 | |
1049 | delay_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 | |
1065 | NIUTx_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 | |
1072 | delay_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 | |
1087 | NIUTx_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 | |
1094 | delay_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 | |
1103 | Done_Pkt_Chk: | |
1104 | test_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 | ************************************************************************/ | |
1113 | SECTION SetRngConfig_init data_va=0x100000000 | |
1114 | attr_data { | |
1115 | Name = SetRngConfig_init, | |
1116 | hypervisor, | |
1117 | compressimage | |
1118 | } | |
1119 | .data | |
1120 | SetRngConfig_init: | |
1121 | .xword 0x0060452301000484 | |
1122 | ||
1123 | SECTION SetTxRingKick_init data_va=0x100000100 | |
1124 | attr_data { | |
1125 | Name = SetTxRingKick_init, | |
1126 | hypervisor, | |
1127 | compressimage | |
1128 | } | |
1129 | .data | |
1130 | SetTxRingKick_init: | |
1131 | .xword 0x0060452301000484 | |
1132 | ||
1133 | SECTION SetTxLPMask1_init data_va=0x100000200 | |
1134 | attr_data { | |
1135 | Name = SetTxLPMask1_init, | |
1136 | hypervisor, | |
1137 | compressimage | |
1138 | } | |
1139 | .data | |
1140 | SetTxLPMask1_init: | |
1141 | .xword 0x0060452301000484 | |
1142 | ||
1143 | SECTION SetTxLPValue1_init data_va=0x100000300 | |
1144 | attr_data { | |
1145 | Name = SetTxLPValue1_init, | |
1146 | hypervisor, | |
1147 | compressimage | |
1148 | } | |
1149 | .data | |
1150 | SetTxLPValue1_init: | |
1151 | .xword 0x0060452301000484 | |
1152 | ||
1153 | SECTION SetTxLPRELOC1_init data_va=0x100000400 | |
1154 | attr_data { | |
1155 | Name = SetTxLPRELOC1_init, | |
1156 | hypervisor, | |
1157 | compressimage | |
1158 | } | |
1159 | .data | |
1160 | SetTxLPRELOC1_init: | |
1161 | .xword 0x0060452301000484 | |
1162 | SECTION SetTxLPMask2_init data_va=0x100000500 | |
1163 | attr_data { | |
1164 | Name = SetTxLPMask2_init, | |
1165 | hypervisor, | |
1166 | compressimage | |
1167 | } | |
1168 | .data | |
1169 | SetTxLPMask2_init: | |
1170 | .xword 0x0060452301000484 | |
1171 | SECTION SetTxLPValue2_init data_va=0x100000600 | |
1172 | attr_data { | |
1173 | Name = SetTxLPValue2_init, | |
1174 | hypervisor, | |
1175 | compressimage | |
1176 | } | |
1177 | .data | |
1178 | SetTxLPValue2_init: | |
1179 | .xword 0x0060452301000484 | |
1180 | ||
1181 | SECTION SetTxLPRELOC2_init data_va=0x100000700 | |
1182 | attr_data { | |
1183 | Name = SetTxLPRELOC2_init, | |
1184 | hypervisor, | |
1185 | compressimage | |
1186 | } | |
1187 | .data | |
1188 | SetTxLPRELOC2_init: | |
1189 | .xword 0x0060452301000484 | |
1190 | ||
1191 | SECTION SetTxLPValid_init data_va=0x100000800 | |
1192 | attr_data { | |
1193 | Name = SetTxLPValid_init, | |
1194 | hypervisor, | |
1195 | compressimage | |
1196 | } | |
1197 | .data | |
1198 | SetTxLPValid_init: | |
1199 | .xword 0x0060452301000484 | |
1200 | !# 315 "diag.j.pp" | |
1201 | ||
1202 | #if 0 | |
1203 | #endif |