Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / spc / ldst_atomic.s
CommitLineData
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
44main:
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
64tc_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
76tc_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
94tc_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
137tc_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
183tc_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
248tc_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 */
277diag_pass:
278 set 0xaaddcafe, %l0
279 EXIT_GOOD
280 nop
281
282.data
283
284bank0_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
294bank1_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
304bank2_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
314bank3_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
324bank4_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
334bank5_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
344bank6_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
354bank7_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
364atmpg_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
390atmpg_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
400atmpg_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
427atmpg_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
437atmpg_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
464atmpg_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
474atmpg_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
501atmpg_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