Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | template main (); |
2 | ||
3 | %%section c_declarations | |
4 | int myrand ; | |
5 | %%section init | |
6 | ||
7 | myrand = random()&0xff; | |
8 | ||
9 | #ij ifdef MT | |
10 | IJ_bind_thread_group(th_rand,myrand); | |
11 | ||
12 | IJ_bind_thread_group(th_all, 0xff); | |
13 | ||
14 | IJ_bind_thread_group(th_0, 0x01); | |
15 | IJ_bind_thread_group(th_1, 0x02); | |
16 | IJ_bind_thread_group(th_2, 0x04); | |
17 | IJ_bind_thread_group(th_3, 0x08); | |
18 | IJ_bind_thread_group(th_4, 0x10); | |
19 | IJ_bind_thread_group(th_5, 0x20); | |
20 | IJ_bind_thread_group(th_6, 0x40); | |
21 | IJ_bind_thread_group(th_7, 0x80); | |
22 | #ij else | |
23 | IJ_bind_thread_group(th_all, 0x01); | |
24 | IJ_bind_thread_group(th_A, 0x01); | |
25 | IJ_bind_thread_group(th_B,0x01); | |
26 | #ij endif | |
27 | ||
28 | #ij ifdef TX_DMA_CH_NO | |
29 | IJ_set_rvar(NIU_TX_DMA_CH_NO, "{0,15}"); | |
30 | #ij else | |
31 | IJ_set_rvar(NIU_TX_DMA_CH_NO, "4'h0"); /* IJ_set_rvar(NIU_TX_DMA_CH_NO, "{0..23}"); */ | |
32 | #ij endif | |
33 | ||
34 | #ij ifdef TX_PKT_CNT | |
35 | IJ_set_rvar(NIU_TX_PKT_CNT, "16'h00rr"); | |
36 | #ij else | |
37 | IJ_set_rvar(NIU_TX_PKT_CNT, "16'h0010"); /* IJ_set_rvar(NIU_TX_PKT_CNT, "16'hrrrr"); */ | |
38 | #ij endif | |
39 | ||
40 | #ij ifdef TX_PKT_LEN | |
41 | IJ_set_rvar(NIU_TX_PKT_LEN, "{64,100,1500}"); | |
42 | #ij else | |
43 | IJ_set_rvar(NIU_TX_PKT_LEN, "16'h0040"); | |
44 | #ij endif | |
45 | ||
46 | #ij ifdef TX_DESC_START_ADDR | |
47 | IJ_set_rvar(NIU_TX_DESC_START_ADDR, "64'h0000_0001_rrrr_0000"); | |
48 | #ij else | |
49 | IJ_set_rvar(NIU_TX_DESC_START_ADDR, "64'h0000_0001_0000_0000"); | |
50 | #ij endif | |
51 | ||
52 | %asm{ | |
53 | #define MAIN_PAGE_HV_ALSO | |
54 | ||
55 | #include "hboot.s" | |
56 | #include "niu_defines.h" | |
57 | ||
58 | .text | |
59 | .global main | |
60 | ||
61 | main: | |
62 | ta T_CHANGE_HPRIV | |
63 | nop | |
64 | ||
65 | ||
66 | %} | |
67 | ||
68 | IJ_printf (th_A, "!\n"); | |
69 | IJ_printf (th_A, "! Thread 0 Start\n"); | |
70 | IJ_printf (th_A, "!\n"); | |
71 | IJ_printf (th_A, "!\n"); | |
72 | IJ_printf (th_A, "!thread_0:\n"); | |
73 | ||
74 | IJ_printf (th_A, "\nInit_flow:"); | |
75 | IJ_printf (th_A, "\n\tnop"); | |
76 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.Init_flow)) -> pktGenConfig(MAC_ID, FRAME_TYPE, FRAME_CLASS, %0ll16x)\n",(IJ_get_rvar_val32(NIU_TX_PKT_LEN))); | |
77 | ||
78 | IJ_printf (th_A, "\nP_TxDMAActivate:"); | |
79 | IJ_printf (th_A, "\n\tsetx MAC_ID, %%g1, %%o0"); | |
80 | IJ_printf (th_A, "\n\tsetx 0x%0ll16x, %%g1, %%o1", (1<<(IJ_get_rvar_val32(NIU_TX_DMA_CH_NO)))); | |
81 | IJ_printf (th_A, "\n\tcall SetTxDMAActive"); | |
82 | IJ_printf (th_A, "\n\tnop"); | |
83 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.P_TxDMAActivate)) -> NIU_TxDMAActivate (MAC_ID, %0ll16x)\n \n",(1<<(IJ_get_rvar_val32(NIU_TX_DMA_CH_NO)))); | |
84 | IJ_printf (th_A, "\n\tsetx XMAC0_MAX_addr, %%g7, %%g2"); | |
85 | ||
86 | IJ_printf (th_A, "\nP_AddTxChannels:"); | |
87 | IJ_printf (th_A, "\n\tnop"); | |
88 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.P_AddTxChannels)) -> NIU_AddTxChannels(MAC_ID, %0ll4x)\n", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
89 | IJ_printf (th_A, "\tldxa [%%g2]ASI_PRIMARY_LITTLE, %%g5"); | |
90 | IJ_printf (th_A, "\n\tnop\n"); | |
91 | ||
92 | IJ_printf (th_A, "\nP_SetTxMaxBurst:"); | |
93 | IJ_printf (th_A, "\n\tsetx 0x%0ll16x, %%g1, %%o0", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
94 | IJ_printf (th_A, "\n\tsetx SetTxMaxBurst_Data, %%g1, %%o1"); | |
95 | IJ_printf (th_A, "\n\tcall SetTxMaxBurst"); | |
96 | IJ_printf (th_A, "\n\tnop"); | |
97 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.P_SetTxMaxBurst)) -> NIU_SetTxMaxBurst (MAC_ID, %0ll4x, TxMaxBurst_Data)\n", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
98 | IJ_printf (th_A, "\tldxa [%%g2]ASI_PRIMARY_LITTLE, %%g5"); | |
99 | IJ_printf (th_A, "\n\tnop\n"); | |
100 | ||
101 | IJ_printf (th_A, "\nP_InitTxDma:"); | |
102 | IJ_printf (th_A, "\n\tsetx 0x%0ll4x, %%g1, %%o0", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
103 | IJ_printf (th_A, "\n\tnop"); | |
104 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.P_InitTxDma)) -> NIU_InitTxDma (MAC_ID, %0ll4x, NIU_Xlate_On)\n", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
105 | IJ_printf (th_A, "\tcall InitTxDma"); | |
106 | IJ_printf (th_A, "\n\tnop"); | |
107 | IJ_printf (th_A, "\n\tldxa [%%g2]ASI_PRIMARY_LITTLE, %%g5"); | |
108 | IJ_printf (th_A, "\n\tnop\n"); | |
109 | ||
110 | IJ_printf (th_A, "\nGen_Packet:\n"); | |
111 | IJ_printf (th_A, "\tnop"); | |
112 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.Gen_Packet)) -> TxPktGen(MAC_ID, %0ll4x, 0x%0ll8x,0,0)\n", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO)), (IJ_get_rvar_val32(NIU_TX_PKT_CNT))); | |
113 | IJ_printf (th_A, "\tnop\n\n"); | |
114 | ||
115 | %asm{ | |
116 | setx 0x5, %g1, %g4 | |
117 | delay_loop_tmp: | |
118 | ldxa [%g2]ASI_PRIMARY_LITTLE, %g5 | |
119 | nop | |
120 | nop | |
121 | nop | |
122 | nop | |
123 | dec %g4 | |
124 | brnz %g4, delay_loop_tmp | |
125 | nop | |
126 | %} | |
127 | ||
128 | IJ_printf (th_A, "\nSetTxRingKick:"); | |
129 | IJ_printf (th_A, "\n\tsetx NIU_PKTGEN_CSR_EV2A_TX_RNG_KICK, %%g1, %%g2"); | |
130 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.SetTxRingKick)) -> NIU_SetTxRingKick(MAC_ID, %0ll4x)\n", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
131 | IJ_printf (th_A, "\tsetx 0x%0ll4x, %%g1, %%o0", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
132 | IJ_printf (th_A, "\n\tldx [%%g2] , %%g3"); | |
133 | IJ_printf (th_A, "\n\tnop"); | |
134 | IJ_printf (th_A, "\n\tmulx %%o0, 0x200, %%g5"); | |
135 | IJ_printf (th_A, "\n\tsetx TX_RING_KICK_Addr, %%g1, %%g2"); | |
136 | IJ_printf (th_A, "\n\tadd %%g2, %%g5, %%g2"); | |
137 | IJ_printf (th_A, "\n\tstxa %%g3, [%%g2]ASI_PRIMARY_LITTLE"); | |
138 | IJ_printf (th_A, "\n\tnop\n"); | |
139 | ||
140 | IJ_printf (th_A, "\nSetTxCs:"); | |
141 | IJ_printf (th_A, "\n\tsetx 0x%0ll4x, %%g1, %%o0", (IJ_get_rvar_val32(NIU_TX_DMA_CH_NO))); | |
142 | IJ_printf (th_A, "\n\tsetx TX_CS_Data, %%g1, %%g3"); | |
143 | IJ_printf (th_A, "\n\tmulx %%o0, 0x200, %%g5"); | |
144 | IJ_printf (th_A, "\n\tsetx TX_CS_Addr, %%g1, %%g2"); | |
145 | IJ_printf (th_A, "\n\tadd %%g2, %%g5, %%g2"); | |
146 | IJ_printf (th_A, "\n\tstxa %%g3, [%%g2]ASI_PRIMARY_LITTLE"); | |
147 | IJ_printf (th_A, "\n\tnop\n\n"); | |
148 | ||
149 | ||
150 | %asm{ | |
151 | #ifdef JUMBO_FRAME_EN | |
152 | setx loop_count, %g1, %g4 | |
153 | delay_loop: | |
154 | ldxa [%g2]ASI_PRIMARY_LITTLE, %g5 | |
155 | nop | |
156 | nop | |
157 | nop | |
158 | nop | |
159 | dec %g4 | |
160 | brnz %g4, delay_loop | |
161 | nop | |
162 | #endif | |
163 | ||
164 | %} | |
165 | IJ_printf (th_A, "\nNIUTx_Pkt_Cnt_Chk:"); | |
166 | IJ_printf (th_A, "\n\tsetx MAC_ID, %%g1, %%o0"); | |
167 | IJ_printf (th_A, "\n\tsetx 0x%0ll4x, %%g1, %%o1", (IJ_get_rvar_val32(NIU_TX_PKT_CNT))); | |
168 | IJ_printf (th_A, "\n\tcall NiuTx_check_pkt_cnt"); | |
169 | IJ_printf (th_A, "\n\tnop\n\n"); | |
170 | ||
171 | %asm{ | |
172 | setx loop_count, %g1, %g4 | |
173 | delay_loop_end: | |
174 | ldxa [%g2]ASI_PRIMARY_LITTLE, %g5 | |
175 | nop | |
176 | nop | |
177 | nop | |
178 | nop | |
179 | dec %g4 | |
180 | brnz %g4, delay_loop_end | |
181 | nop | |
182 | %} | |
183 | %% !section init | |
184 | ||
185 | %%section finish | |
186 | ||
187 | IJ_printf (th_A, "\ntest_passed:"); | |
188 | IJ_printf (th_A, "\n\tnop"); | |
189 | IJ_printf (th_A, "\t ! $EV trig_pc_d(1, @VA(.MAIN.test_passed)) -> NIU_EXIT_chk(MAC_ID)\n"); | |
190 | ||
191 | %asm{ | |
192 | EXIT_GOOD | |
193 | ||
194 | %} | |
195 | ||
196 | IJ_printf (th_A, "\n/************************************************************************"); | |
197 | IJ_printf (th_A, "\n Test case data start"); | |
198 | IJ_printf (th_A, "\n************************************************************************/\n"); | |
199 | ||
200 | ||
201 | %asm{ | |
202 | SECTION SetRngConfig_init data_va=0x100000000 | |
203 | attr_data { | |
204 | Name = SetRngConfig_init, | |
205 | hypervisor, | |
206 | compressimage | |
207 | } | |
208 | .data | |
209 | SetRngConfig_init: | |
210 | .xword 0x0060452301000484 | |
211 | ||
212 | SECTION SetTxRingKick_init data_va=0x100000100 | |
213 | attr_data { | |
214 | Name = SetTxRingKick_init, | |
215 | hypervisor, | |
216 | compressimage | |
217 | } | |
218 | .data | |
219 | SetTxRingKick_init: | |
220 | .xword 0x0060452301000484 | |
221 | ||
222 | SECTION SetTxLPMask1_init data_va=0x100000200 | |
223 | attr_data { | |
224 | Name = SetTxLPMask1_init, | |
225 | hypervisor, | |
226 | compressimage | |
227 | } | |
228 | .data | |
229 | SetTxLPMask1_init: | |
230 | .xword 0x0060452301000484 | |
231 | ||
232 | SECTION SetTxLPValue1_init data_va=0x100000300 | |
233 | attr_data { | |
234 | Name = SetTxLPValue1_init, | |
235 | hypervisor, | |
236 | compressimage | |
237 | } | |
238 | .data | |
239 | SetTxLPValue1_init: | |
240 | .xword 0x0060452301000484 | |
241 | ||
242 | SECTION SetTxLPRELOC1_init data_va=0x100000400 | |
243 | attr_data { | |
244 | Name = SetTxLPRELOC1_init, | |
245 | hypervisor, | |
246 | compressimage | |
247 | } | |
248 | .data | |
249 | SetTxLPRELOC1_init: | |
250 | .xword 0x0060452301000484 | |
251 | SECTION SetTxLPMask2_init data_va=0x100000500 | |
252 | attr_data { | |
253 | Name = SetTxLPMask2_init, | |
254 | hypervisor, | |
255 | compressimage | |
256 | } | |
257 | .data | |
258 | SetTxLPMask2_init: | |
259 | .xword 0x0060452301000484 | |
260 | SECTION SetTxLPValue2_init data_va=0x100000600 | |
261 | attr_data { | |
262 | Name = SetTxLPValue2_init, | |
263 | hypervisor, | |
264 | compressimage | |
265 | } | |
266 | .data | |
267 | SetTxLPValue2_init: | |
268 | .xword 0x0060452301000484 | |
269 | ||
270 | SECTION SetTxLPRELOC2_init data_va=0x100000700 | |
271 | attr_data { | |
272 | Name = SetTxLPRELOC2_init, | |
273 | hypervisor, | |
274 | compressimage | |
275 | } | |
276 | .data | |
277 | SetTxLPRELOC2_init: | |
278 | .xword 0x0060452301000484 | |
279 | ||
280 | SECTION SetTxLPValid_init data_va=0x100000800 | |
281 | attr_data { | |
282 | Name = SetTxLPValid_init, | |
283 | hypervisor, | |
284 | compressimage | |
285 | } | |
286 | .data | |
287 | SetTxLPValid_init: | |
288 | .xword 0x0060452301000484 | |
289 | ||
290 | ||
291 | %} | |
292 | %% !section finish | |
293 | ||
294 | %%section null_grammar | |
295 | ||
296 | endtemplate |