Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | /* |
2 | * ========== Copyright Header Begin ========================================== | |
3 | * | |
4 | * OpenSPARC T2 Processor File: ldst_atomic.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 | #include "defines.h" | |
39 | #include "old_boot.s" | |
40 | .global main | |
41 | ||
42 | .text | |
43 | ||
44 | main: | |
45 | setx bank0_data, %l0, %l1 | |
46 | set 0xff, %l3 | |
47 | set 0x55, %l4 | |
48 | set 0xbb, %l5 | |
49 | set 0xcc, %l6 | |
50 | set 0xdd, %l7 | |
51 | ||
52 | ld [%l1], %l2 | |
53 | add %l2, 0xff, %l2 | |
54 | st %l2, [%l1] | |
55 | st %l3, [%l1+0x80] | |
56 | st %l4, [%l1+0x100] | |
57 | st %l5, [%l1+0x180] | |
58 | ||
59 | ld [%l1], %l2 | |
60 | ld [%l1+0x80], %l2 | |
61 | ld [%l1+0x100], %l2 | |
62 | ld [%l1+0x180], %l2 | |
63 | ||
64 | tc_0: | |
65 | /* | |
66 | ******************************* | |
67 | * load miss, atomic, ld again | |
68 | ******************************* | |
69 | */ | |
70 | /* swap */ | |
71 | setx bank1_data, %l0, %l1 | |
72 | ld [%l1], %l2 | |
73 | swap [%l1], %l3 | |
74 | ld [%l1], %l2 | |
75 | ||
76 | tc_my: | |
77 | /* CASA */ | |
78 | setx bank2_data, %l0, %l1 | |
79 | ld [%l1], %l2 | |
80 | casa [%l1] 0x80, %l4, %l7 | |
81 | ld [%l1], %l2 | |
82 | ||
83 | /* CASXA */ | |
84 | setx bank3_data, %l0, %l1 | |
85 | ld [%l1], %l2 | |
86 | casxa [%l1] 0x80, %l5, %l7 | |
87 | ld [%l1], %l2 | |
88 | ||
89 | /* LDSTUB */ | |
90 | setx bank4_data, %l0, %l1 | |
91 | ldub [%l1], %l2 | |
92 | ldstub [%l1], %l3 | |
93 | ldub [%l1], %l2 | |
94 | tc_1: | |
95 | /* | |
96 | ************************************* | |
97 | * store miss in L1 D$ , atomic, ld | |
98 | ************************************* | |
99 | */ | |
100 | ||
101 | /* swap */ | |
102 | setx bank1_data, %l0, %l1 | |
103 | add %l1, 0x10, %l1 | |
104 | set 0xaabbccdd, %l2 | |
105 | set 0xaabbccdd, %l3 | |
106 | st %l2, [%l1] | |
107 | swap [%l1], %l3 | |
108 | ld [%l1], %l4 | |
109 | ||
110 | /* CASA */ | |
111 | setx bank2_data, %l0, %l1 | |
112 | add %l1, 0x10, %l1 | |
113 | set 0xaabbccdd, %l2 | |
114 | set 0xaabbccdd, %l3 | |
115 | st %l2, [%l1] | |
116 | casa [%l1] 0x80, %l3, %l7 | |
117 | ld [%l1], %l4 | |
118 | ||
119 | /* CASXA */ | |
120 | setx bank3_data, %l0, %l1 | |
121 | add %l1, 0x10, %l1 | |
122 | set 0xaabbccdd, %l2 | |
123 | set 0xaabbccdd, %l3 | |
124 | stx %l2, [%l1] | |
125 | casxa [%l1] 0x80, %l5, %l7 | |
126 | ldx [%l1], %l4 | |
127 | ||
128 | /* LDSTUB */ | |
129 | setx bank4_data, %l0, %l1 | |
130 | add %l1, 0x10, %l1 | |
131 | set 0xaabbccdd, %l2 | |
132 | set 0xaabbccdd, %l3 | |
133 | stub %l2, [%l1] | |
134 | ldstub [%l1], %l4 | |
135 | ldx [%l1], %l4 | |
136 | ||
137 | tc_2: | |
138 | /* | |
139 | ************************************* | |
140 | * store hit in L1 D$ , atomic, ld | |
141 | ************************************* | |
142 | */ | |
143 | /* swap */ | |
144 | setx bank1_data, %l0, %l1 | |
145 | add %l1, 0x10, %l1 | |
146 | set 0xaabbccdd, %l2 | |
147 | set 0xaabbccdd, %l3 | |
148 | ld [%l1], %l4 | |
149 | st %l2, [%l1] | |
150 | swap [%l1], %l3 | |
151 | ld [%l1], %l4 | |
152 | ||
153 | /* CASA */ | |
154 | setx bank2_data, %l0, %l1 | |
155 | add %l1, 0x10, %l1 | |
156 | set 0xaabbccdd, %l2 | |
157 | set 0xaabbccdd, %l3 | |
158 | ld [%l1], %l4 | |
159 | st %l2, [%l1] | |
160 | casa [%l1] 0x80, %l3, %l7 | |
161 | ld [%l1], %l4 | |
162 | ||
163 | /* CASXA */ | |
164 | setx bank3_data, %l0, %l1 | |
165 | add %l1, 0x10, %l1 | |
166 | set 0xaabbccdd, %l2 | |
167 | set 0xaabbccdd, %l3 | |
168 | ldx [%l1], %l4 | |
169 | stx %l2, [%l1] | |
170 | casxa [%l1] 0x80, %l5, %l7 | |
171 | ldx [%l1], %l4 | |
172 | ||
173 | /* LDSTUB */ | |
174 | setx bank4_data, %l0, %l1 | |
175 | add %l1, 0x10, %l1 | |
176 | set 0xaabbccdd, %l2 | |
177 | set 0xaabbccdd, %l3 | |
178 | ldub [%l1], %l4 | |
179 | stub %l2, [%l1] | |
180 | ldstub [%l1], %l4 | |
181 | ld [%l1], %l5 | |
182 | ||
183 | tc_3: | |
184 | /* | |
185 | ************************************* | |
186 | * store hit in L1 D$ , atomic raws | |
187 | * against the store | |
188 | ************************************* | |
189 | */ | |
190 | /* swap */ | |
191 | setx bank1_data, %l0, %l1 | |
192 | add %l1, 0x10, %l1 | |
193 | set 0xaabbccdd, %l2 | |
194 | set 0xaabbccdd, %l3 | |
195 | ld [%l1], %l4 | |
196 | stub %l2, [%l1] | |
197 | swap [%l1], %l3 | |
198 | ld [%l1], %l4 !! ld will by-pass ? | |
199 | ||
200 | /* CASA */ | |
201 | setx bank2_data, %l0, %l1 | |
202 | add %l1, 0x10, %l1 | |
203 | set 0xaabbccdd, %l2 | |
204 | set 0xaabbccdd, %l3 | |
205 | ld [%l1], %l4 | |
206 | stuh %l2, [%l1] | |
207 | casa [%l1] 0x80, %l3, %l7 | |
208 | ld [%l1], %l4 | |
209 | ||
210 | setx bank2_data, %l0, %l1 | |
211 | add %l1, 0x20, %l1 | |
212 | set 0xaabbccdd, %l2 | |
213 | set 0xaabbccdd, %l3 | |
214 | ld [%l1], %l4 | |
215 | stuh %l2, [%l1] | |
216 | casa [%l1] 0x80, %l3, %l7 | |
217 | ldx [%l1], %l4 !!! ld will raw check ? | |
218 | ||
219 | /* CASXA */ | |
220 | setx bank3_data, %l0, %l1 | |
221 | add %l1, 0x10, %l1 | |
222 | set 0xaabbccdd, %l2 | |
223 | set 0xaabbccdd, %l3 | |
224 | ldx [%l1], %l4 | |
225 | st %l2, [%l1] | |
226 | casxa [%l1] 0x80, %l5, %l7 | |
227 | ldx [%l1], %l4 !! ld will by-pass ? | |
228 | ||
229 | setx bank3_data, %l0, %l1 | |
230 | add %l1, 0x20, %l1 | |
231 | set 0xaabbccdd, %l2 | |
232 | set 0xaabbccdd, %l3 | |
233 | ldx [%l1], %l4 | |
234 | st %l2, [%l1] | |
235 | casxa [%l1] 0x80, %l5, %l7 | |
236 | ld [%l1], %l4 !! ld will by-pass ? | |
237 | ||
238 | /* LDSTUB */ | |
239 | setx bank4_data, %l0, %l1 | |
240 | add %l1, 0x20, %l1 | |
241 | set 0xaabbccdd, %l2 | |
242 | set 0xaabbccdd, %l3 | |
243 | ldub [%l1], %l4 | |
244 | stub %l2, [%l1] | |
245 | ldstub [%l1], %l4 | |
246 | ldx [%l1], %l4 | |
247 | ||
248 | tc_4: | |
249 | /* | |
250 | ***************************************************** | |
251 | * atomic page miss on the last word/byte of the pg | |
252 | ***************************************************** | |
253 | */ | |
254 | set 0x0, %l0 | |
255 | set 0x55aabb55, %l3 | |
256 | set 0x55aabb55, %l4 | |
257 | setx atmpg_1_end, %l0, %l1 | |
258 | add %l1, 0x1c, %l1 | |
259 | swap [%l1], %l2 | |
260 | stub %l3, [%l1] | |
261 | ld [%l1], %l5 | |
262 | ||
263 | set 0x0, %l0 | |
264 | set 0x55aabb55, %l3 | |
265 | set 0x55aabb55, %l4 | |
266 | setx atmpg_2_end, %l0, %l1 | |
267 | add %l1, 0x1c, %l1 | |
268 | casa [%l1] 0x80, %l4, %l7 | |
269 | stub %l3, [%l1] | |
270 | ld [%l1], %l5 | |
271 | ||
272 | /* | |
273 | ******************************** | |
274 | * Diag PASSED * | |
275 | ******************************** | |
276 | */ | |
277 | diag_pass: | |
278 | set 0xaaddcafe, %l0 | |
279 | EXIT_GOOD | |
280 | nop | |
281 | ||
282 | .data | |
283 | ||
284 | bank0_data: .word 0xffeebb00 | |
285 | .word 0xffeebb01 | |
286 | .word 0x55667788 | |
287 | .word 0x99aabbcc | |
288 | .word 0xeeedf919 | |
289 | .word 0x2d9e6fb3 | |
290 | .word 0x73401a3a | |
291 | .word 0xe3aedd4b | |
292 | .align 128 | |
293 | ||
294 | bank1_data: .word 0x43c9dc8b | |
295 | .word 0xe7fa0cbc | |
296 | .word 0x4870ab07 | |
297 | .word 0x7b4a32f6 | |
298 | .word 0x4552fe25 | |
299 | .word 0xbd84b3a7 | |
300 | .word 0xccb898f3 | |
301 | .word 0x8ccfc422 | |
302 | .align 128 | |
303 | ||
304 | bank2_data: .word 0xbdd8cb4b | |
305 | .word 0x2d68ac94 | |
306 | .word 0x3b530bb2 | |
307 | .word 0x2dba3f10 | |
308 | .word 0xc1136b8d | |
309 | .word 0x5db2e249 | |
310 | .word 0xc9d34e57 | |
311 | .word 0x15802f15 | |
312 | .align 128 | |
313 | ||
314 | bank3_data: .word 0xbdd8cb4b | |
315 | .word 0x2d68ac94 | |
316 | .word 0x3b530bb2 | |
317 | .word 0x2dba3f10 | |
318 | .word 0xc1136b8d | |
319 | .word 0x5db2e249 | |
320 | .word 0xc9d34e57 | |
321 | .word 0x15802f15 | |
322 | .align 128 | |
323 | ||
324 | bank4_data: .word 0xaa5555aa | |
325 | .word 0xeeffbbcc | |
326 | .word 0x55667788 | |
327 | .word 0x99aabbcc | |
328 | .word 0xeeedf919 | |
329 | .word 0x2d9e6fb3 | |
330 | .word 0x73401a3a | |
331 | .word 0xe3aedd4b | |
332 | .align 128 | |
333 | ||
334 | bank5_data: .word 0x43c9dc8b | |
335 | .word 0xabd03ae3 | |
336 | .word 0x8fa4b4a7 | |
337 | .word 0x89d80b15 | |
338 | .word 0xd6be7dbf | |
339 | .word 0xbe02a58f | |
340 | .word 0x3752b2e5 | |
341 | .word 0x2b447b56 | |
342 | .align 128 | |
343 | ||
344 | bank6_data: .word 0xbdd8cb4b | |
345 | .word 0x863abc4e | |
346 | .word 0xba7c225 | |
347 | .word 0xc9d532ab | |
348 | .word 0x384550fa | |
349 | .word 0x29f7b86 | |
350 | .word 0xd0e9f30c | |
351 | .word 0x6feb38ef | |
352 | .align 128 | |
353 | ||
354 | bank7_data: .word 0xbdd8cb4b | |
355 | .word 0x65b5fdc5 | |
356 | .word 0x8ea9f93e | |
357 | .word 0xbac7d47 | |
358 | .word 0x35426b1b | |
359 | .word 0xd03a1fc8 | |
360 | .word 0x16823e2e | |
361 | .word 0x7b8f41d2 | |
362 | .align 8192 | |
363 | ||
364 | atmpg_1: | |
365 | .word 0x1334bbed | |
366 | .word 0x448801f1 | |
367 | .word 0x164214e7 | |
368 | .word 0x79ba6a8d | |
369 | .word 0xdfedd60a | |
370 | .word 0x946c08d6 | |
371 | .word 0x70bef44e | |
372 | .word 0x4348f63c | |
373 | .word 0x9ed8066e | |
374 | .word 0x8b3ae9b | |
375 | .word 0x50001b96 | |
376 | .word 0x5924dc5b | |
377 | .word 0xe9a19b46 | |
378 | .word 0xb6bb1463 | |
379 | .word 0x656ed444 | |
380 | .word 0xdbb295b2 | |
381 | .align 4096 | |
382 | .align 2048 | |
383 | .align 1024 | |
384 | .align 512 | |
385 | .align 256 | |
386 | .align 128 | |
387 | .align 64 | |
388 | .align 32 | |
389 | ||
390 | atmpg_1_end: | |
391 | .word 0x98033575 | |
392 | .word 0xde88cfe3 | |
393 | .word 0x2385df14 | |
394 | .word 0xee38e34e | |
395 | .word 0xfb1b1213 | |
396 | .word 0x70e1fe36 | |
397 | .word 0x33c7337c | |
398 | .word 0xaa928ec1 | |
399 | ||
400 | atmpg_2: | |
401 | .word 0xd0abf053 | |
402 | .word 0xf2618e65 | |
403 | .word 0xac87049c | |
404 | .word 0x7328a59e | |
405 | .word 0xdedff1a2 | |
406 | .word 0x39ced123 | |
407 | .word 0xb188c1d4 | |
408 | .word 0x56a89116 | |
409 | .word 0xa20c49e7 | |
410 | .word 0x74e02e90 | |
411 | .word 0x44fa83c5 | |
412 | .word 0xcbb6970e | |
413 | .word 0x20b346b4 | |
414 | .word 0xdb2b856d | |
415 | .word 0x32894c3a | |
416 | .word 0xa96c255b | |
417 | ||
418 | .align 4096 | |
419 | .align 2048 | |
420 | .align 1024 | |
421 | .align 512 | |
422 | .align 256 | |
423 | .align 128 | |
424 | .align 64 | |
425 | .align 32 | |
426 | ||
427 | atmpg_2_end: | |
428 | .word 0xa8b5b209 | |
429 | .word 0x2e2ba001 | |
430 | .word 0x736d50b3 | |
431 | .word 0xfc4629f5 | |
432 | .word 0x71a1baf8 | |
433 | .word 0x8b80e8e5 | |
434 | .word 0xeedcf402 | |
435 | .word 0x2cac0590 | |
436 | ||
437 | atmpg_3: | |
438 | .word 0xdf483230 | |
439 | .word 0x7ec0269d | |
440 | .word 0xf6ac51cc | |
441 | .word 0x4090e7f0 | |
442 | .word 0xa55687a3 | |
443 | .word 0x6237afe8 | |
444 | .word 0x76618a03 | |
445 | .word 0xc725e21e | |
446 | .word 0xdb44be77 | |
447 | .word 0x99532f3a | |
448 | .word 0x2db3746a | |
449 | .word 0x6d791b0b | |
450 | .word 0x56421d42 | |
451 | .word 0x8695bed5 | |
452 | .word 0xb7075ebd | |
453 | .word 0x5f6078f7 | |
454 | ||
455 | .align 4096 | |
456 | .align 2048 | |
457 | .align 1024 | |
458 | .align 512 | |
459 | .align 256 | |
460 | .align 128 | |
461 | .align 64 | |
462 | .align 32 | |
463 | ||
464 | atmpg_3_end: | |
465 | .word 0x9640dd17 | |
466 | .word 0xc013728d | |
467 | .word 0xd52d71fd | |
468 | .word 0x2db3c639 | |
469 | .word 0xe876766 | |
470 | .word 0x1d00b0e6 | |
471 | .word 0xbfb05db3 | |
472 | .word 0xa1285c1a | |
473 | ||
474 | atmpg_4: | |
475 | .word 0xab8d9c9 | |
476 | .word 0x18310dd5 | |
477 | .word 0xd8dc1075 | |
478 | .word 0x30a4da96 | |
479 | .word 0x4e6a194f | |
480 | .word 0x67a7bad6 | |
481 | .word 0x8b34188a | |
482 | .word 0xaf4db662 | |
483 | .word 0x5d98c33f | |
484 | .word 0x4c71dc04 | |
485 | .word 0x3ea4122f | |
486 | .word 0x96e25bdf | |
487 | .word 0x7e63881c | |
488 | .word 0x9b44c8d1 | |
489 | .word 0x1555c89f | |
490 | .word 0x6b85c0b1 | |
491 | ||
492 | .align 4096 | |
493 | .align 2048 | |
494 | .align 1024 | |
495 | .align 512 | |
496 | .align 256 | |
497 | .align 128 | |
498 | .align 64 | |
499 | .align 32 | |
500 | ||
501 | atmpg_4_end: | |
502 | .word 0xa6f8c1c2 | |
503 | .word 0xc125a4bd | |
504 | .word 0x7f492240 | |
505 | .word 0xba91b175 | |
506 | .word 0xc4d56423 | |
507 | .word 0x466a39ef | |
508 | .word 0x68eb5120 | |
509 | .word 0xca217bda | |
510 | ||
511 | .end |