Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / uarch / lsu / diag / err_inj_mondo_diag.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: err_inj_mondo_diag.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 MY_HP_TEXT_PA 0x1050000000
39#define MY_HP_DATA_PA 0x1050001000
40
41#define ASI_PRIMARY_CONTEXT_0 0x21
42#define ASI_ITLB_DATA_IN_REG 0x54
43#define ASI_DMMU_TAG_ACCESS 0x58
44#define ASI_DTLB_DATA_IN_REG 0x5c
45#define ASI_DMMU_SFAR 0x58
46
47
48#define MY_USER_TEXT_VA000 0x7a000000
49#define MY_USER_TEXT_RA000 0x7b000000
50#define MY_USER_TEXT_PA000 0x107b000000
51#define MY_USER_TEXT_VA001 0x7a010000
52#define MY_USER_TEXT_RA001 0x7b010000
53#define MY_USER_TEXT_PA001 0x107b010000
54#define MY_USER_TEXT_VA002 0x7a020000
55#define MY_USER_TEXT_RA002 0x7b020000
56#define MY_USER_TEXT_PA002 0x107b020000
57#define MY_USER_TEXT_VA003 0x7a030000
58#define MY_USER_TEXT_RA003 0x7b030000
59#define MY_USER_TEXT_PA003 0x107b030000
60#define MY_USER_TEXT_VA004 0x7a040000
61#define MY_USER_TEXT_RA004 0x7b040000
62#define MY_USER_TEXT_PA004 0x107b040000
63#define MY_USER_TEXT_VA005 0x7a050000
64#define MY_USER_TEXT_RA005 0x7b050000
65#define MY_USER_TEXT_PA005 0x107b050000
66#define MY_USER_TEXT_VA006 0x7a060000
67#define MY_USER_TEXT_RA006 0x7b060000
68#define MY_USER_TEXT_PA006 0x107b060000
69#define MY_USER_TEXT_VA007 0x7a070000
70#define MY_USER_TEXT_RA007 0x7b070000
71#define MY_USER_TEXT_PA007 0x107b070000
72#define MY_USER_TEXT_VA008 0x7a080000
73#define MY_USER_TEXT_RA008 0x7b080000
74#define MY_USER_TEXT_PA008 0x107b080000
75#define MY_USER_TEXT_VA009 0x7a090000
76#define MY_USER_TEXT_RA009 0x7b090000
77#define MY_USER_TEXT_PA009 0x107b090000
78#define MY_USER_TEXT_VA010 0x7a0a0000
79#define MY_USER_TEXT_RA010 0x7b0a0000
80#define MY_USER_TEXT_PA010 0x107b0a0000
81#define MY_USER_TEXT_VA011 0x7a0b0000
82#define MY_USER_TEXT_RA011 0x7b0b0000
83#define MY_USER_TEXT_PA011 0x107b0b0000
84#define MY_USER_TEXT_VA012 0x7a0c0000
85#define MY_USER_TEXT_RA012 0x7b0c0000
86#define MY_USER_TEXT_PA012 0x107b0c0000
87#define MY_USER_TEXT_VA013 0x7a0d0000
88#define MY_USER_TEXT_RA013 0x7b0d0000
89#define MY_USER_TEXT_PA013 0x107b0d0000
90
91#define MY_USER_DATA_VA000 0x6a000000
92#define MY_USER_DATA_RA000 0x6b000000
93#define MY_USER_DATA_PA000 0x106b000000
94#define MY_USER_DATA_VA001 0x6a010000
95#define MY_USER_DATA_RA001 0x6b010000
96#define MY_USER_DATA_PA001 0x106b010000
97#define MY_USER_DATA_VA002 0x6a020000
98#define MY_USER_DATA_RA002 0x6b020000
99#define MY_USER_DATA_PA002 0x106b020000
100#define MY_USER_DATA_VA003 0x6a030000
101#define MY_USER_DATA_RA003 0x6b030000
102#define MY_USER_DATA_PA003 0x106b030000
103#define MY_USER_DATA_VA004 0x6a040000
104#define MY_USER_DATA_RA004 0x6b040000
105#define MY_USER_DATA_PA004 0x106b040000
106#define MY_USER_DATA_VA005 0x6a050000
107#define MY_USER_DATA_RA005 0x6b050000
108#define MY_USER_DATA_PA005 0x106b050000
109#define MY_USER_DATA_VA006 0x6a060000
110#define MY_USER_DATA_RA006 0x6b060000
111#define MY_USER_DATA_PA006 0x106b060000
112#define MY_USER_DATA_VA007 0x6a070000
113#define MY_USER_DATA_RA007 0x6b070000
114#define MY_USER_DATA_PA007 0x106b070000
115#define MY_USER_DATA_VA008 0x6a080000
116#define MY_USER_DATA_RA008 0x6b080000
117#define MY_USER_DATA_PA008 0x106b080000
118#define MY_USER_DATA_VA009 0x6a090000
119#define MY_USER_DATA_RA009 0x6b090000
120#define MY_USER_DATA_PA009 0x106b090000
121#define MY_USER_DATA_VA010 0x6a0a0000
122#define MY_nc_DATA_RA010 0xb06b0a0000
123#define MY_nc_DATA_PA010 0xc06b0a0000
124#define MY_USER_DATA_VA011 0x6a0b0000
125#define MY_nc_DATA_RA011 0xb06b0b0000
126#define MY_nc_DATA_PA011 0xc06b0b0000
127#define MY_USER_DATA_VA012 0x6a0c0000
128#define MY_nc_DATA_RA012 0xb06b0c0000
129#define MY_nc_DATA_PA012 0xc06b0c0000
130#define MY_USER_DATA_VA013 0x6a0d0000
131#define MY_nc_DATA_RA013 0xb06b0d0000
132#define MY_nc_DATA_PA013 0xc06b0d0000
133
134#define IMDU_ERR_EN 0xa0000000
135#define IMTU_ERR_EN 0x90000000
136#define DMDU_ERR_EN 0x88000000
137#define DMTU_ERR_EN 0x84000000
138#define IRCU_ERR_EN 0x82000000
139#define FRCU_ERR_EN 0x81000000
140#define SCAU_ERR_EN 0x80800000
141#define TCCU_ERR_EN 0x80400000
142#define TSA_ERR_EN 0x80200000
143#define MRAU_ERR_EN 0x80100000
144#define STAU_ERR_EN 0x80080000
145#define STDU_ERR_EN 0x80020000
146
147#define ASI_DESR 0x4c
148#define ASI_DFESR 0x4c
149#define DFESR_VA 0x8
150#define ASI_DSFSR 0x58
151#define ASI_ISFSR 0x50
152#define SFSR_VA 0x18
153#define ASI_SFAR 0x58
154#define SFAR_VA 0x20
155#define ASI_ERR_INJ 0x43
156#define ASI_CETER 0x4C
157#define CETER_VA 0x18
158#define ASI_CERER 0x4C
159#define CERER_VA 0x10
160
161#define CERER_SBDPC 0x400
162#define CETER_DHCCE 0x1000000000000000
163#define CETER_DE 0x2000000000000000
164#define CETER_PSCCE 0x4000000000000000
165
166#define MAIN_PAGE_HV_ALSO
167
168#define H_HT0_Internal_Processor_Error_0x29
169#define SUN_H_HT0_Internal_Processor_Error_0x29 \
170 ba INT_PROC_ERR_HANDLER; \
171 nop;nop;nop;nop;nop;nop;nop
172
173#define H_T0_Cpu_Mondo_Trap_0x7c
174#define My_T0_Cpu_Mondo_Trap_0x7c \
175 mov 0x3c8, %g3; \
176 ldxa [%g3] 0x25, %g5; \
177 mov 0x3c0, %g3; \
178 ldxa [%g3] 0x25, %i5; \
179 stxa %g5, [%g3] 0x25; \
180 add %g0, 1, %i1; \
181 retry; \
182 nop
183
184#define H_T0_Dev_Mondo_Trap_0x7d
185#define My_T0_Dev_Mondo_Trap_0x7d \
186 mov 0x3d8, %g3; \
187 ldxa [%g3] 0x25, %g5; \
188 mov 0x3d0, %g3; \
189 ldxa [%g3] 0x25, %i5; \
190 stxa %g5, [%g3] 0x25; \
191 add %g0, 1, %i2; \
192 retry; \
193 nop
194
195#define H_T0_Resumable_Error_0x7e
196#define My_T0_Resumable_Error_0x7e \
197 mov 0x3e8, %g3; \
198 ldxa [%g3] 0x25, %g5; \
199 mov 0x3e0, %g3; \
200 ldxa [%g3] 0x25, %i5; \
201 stxa %g5, [%g3] 0x25; \
202 add %g0, 1, %i3; \
203 retry; \
204 nop
205
206#define Enable_err_injection \
207 setx TSA_ERR_EN, %l0, %l5; \
208 or %l5, 0x1, %l5; \
209 stxa %l5, [%g0]ASI_ERR_INJ
210
211#define Disable_err_detection \
212 add %g0, CERER_VA, %g3; \
213 stxa %g0, [%g3]ASI_CERER
214
215#define Enable_err_detection \
216 setx 0x100000000, %g1, %o2; \
217 add %g0, CERER_VA, %g3; \
218 stxa %o2, [%g3]ASI_CERER
219
220#include "hboot.s"
221
222/************************************************************************
223 Test case:
224 ************************************************************************/
225
226.text
227.global main
228.global CLEAR_TSAC
229
230main: /* test begin */
231 ta T_CHANGE_HPRIV
232
233 !! set CERER.TSAC
234 setx 0x100000000, %g1, %o2 !! enable tsac errs
235 add %g0, CERER_VA, %g3
236
237 stxa %o2, [%g3]ASI_CERER
238
239 !! set CETER.PSCCE
240 setx CETER_PSCCE, %l0, %o2
241 add %g0, CETER_VA, %g3
242 stxa %o2, [%g3]ASI_CETER
243
244!! Enable error injection
245 setx TSA_ERR_EN, %l0, %l5
246 or %l5, 0x1, %l5 ! set mask bit 0 to 1
247 stxa %l5, [%g0]ASI_ERR_INJ
248
249 setx user_code_begin_000, %g1, %g2
250 jmp %g2
251 nop
252
253
254 EXIT_GOOD
255
256/************************************************************************
257 Test case data start
258 ************************************************************************/
259.data
260.global user_data_start
261user_data_start:
262.word 0x12345678
263.word 0x9a9b9c9d
264.word 0x00000000
265.word 0xffffffff
266
267!#***********************************************************************
268
269SECTION .My_User_Section_4v000 TEXT_VA=MY_USER_TEXT_VA000, DATA_VA=MY_USER_DATA_VA000
270attr_text {
271 Name = .My_User_Section_4v000,
272 part_0_ctx_nonzero_tsb_config_2,
273 VA = MY_USER_TEXT_VA000,
274 RA = MY_USER_TEXT_RA000,
275 PA = ra2pa(MY_USER_TEXT_RA000, 0),
276 TTE_Context = PCONTEXT,
277 TTE_V = 1,
278 TTE_NFO = 0,
279 TTE_L = 0,
280 TTE_Soft = 0,
281 TTE_IE = 0,
282 TTE_E = 0,
283 TTE_CP = 1,
284 TTE_CV = 0,
285 TTE_P = 0,
286 TTE_EP = 1,
287 TTE_W = 0,
288 TTE_SW1 = 0,
289 TTE_SW0 = 0,
290 TTE_RSVD1 = 0,
291 TTE_Size = 0,
292 }
293attr_text {
294NAME = .My_User_Section_4v000,
295 hypervisor
296}
297!! inject err into tsa entry 6.
298!! Chk that the ipe trap is taken on both reads and writes and also the
299!! disrupting cpu mondo trap is not taken.
300
301.text
302.global user_code_begin_000
303user_code_begin_000:
304!! Do a store into TSA entry 6
305mondo_wr_cpu:
306 mov %g0, %i0
307 mov %g0, %i1
308 mov %g0, %i2
309 mov %g0, %i3
310 mov 0x3c0, %l0
311 stxa %g0, [%l0]0x25 !! store 0 so no trap but err injected
312 mov %g0, %i0
313
314err_inj_dis:
315!! disable error injection
316 stxa %g0, [%g0]ASI_ERR_INJ
317
318 ldxa [%l0]0x25, %l2
319 brz %i0, FAIL !! chk ipe trap taken
320 mov %g0, %i0
321
322change_priv:
323 ta T_CHANGE_NONHPRIV
324 ta T_CHANGE_PRIV
325 brnz %i1, FAIL !! chk mondo trap not taken as head ptr. == tail
326 mov %g0, %i1
327
328 !! read the tail ptr. Err shd be flagged for this too
329 add %g0, 0x3c8, %g1
330 ldxa [%g1]0x25, %l2
331 brz %i0, FAIL !! chk ipe trap taken
332 mov %g0, %i0
333
334 add %g0, 0x80, %l1
335 stxa %l1, [%l0]0x25
336 brz %i0, FAIL !! chk ipe trap taken
337 brnz %i1, FAIL !! chk mondo cpu trap not taken
338 brnz %i2, FAIL !! chk mondo dev trap not taken
339 brnz %i3, FAIL !! chk resumable err trap not taken
340 setx user_code_begin_001, %g1, %g2
341 jmp %g2
342 nop
343
344FAIL:
345 EXIT_BAD
346 nop
347
348attr_data {
349 Name = .My_User_Section_4v000,
350 part_0_ctx_nonzero_tsb_config_1,
351 VA = MY_USER_DATA_VA000,
352 RA = MY_USER_DATA_RA000,
353 PA = ra2pa(MY_USER_DATA_RA000, 0),
354 TTE_Context = PCONTEXT,
355 TTE_V = 1,
356 TTE_NFO = 0,
357 TTE_L = 0,
358 TTE_Soft = 0,
359 TTE_IE = 0,
360 TTE_E = 0,
361 TTE_CP = 1,
362 TTE_CV = 0,
363 TTE_P = 0,
364 TTE_EP = 0,
365 TTE_W = 1,
366 TTE_SW1 = 0,
367 TTE_SW0 = 0,
368 TTE_RSVD1 = 0,
369 TTE_Size = 0,
370 }
371attr_data {
372NAME = .My_User_Section_4v000,
373 hypervisor
374}
375.data
376.global user_data_begin_000
377user_data_begin_000:
378.xword 0xe0066361bd9fcb86
379.xword 0xea22901c101f6f52
380.xword 0x806faa2171350467
381.xword 0xff54f2cd06a0d342
382.xword 0x566bff718cddb905
383.xword 0x6d367bc4d165d37a
384.xword 0x5efc42b18f920522
385.xword 0x584c92dec4bc66de
386
387.xword 0xed9efe0d05896ce1
388
389.xword 0xf9d45b94972117c8
390
391.xword 0xd0c647618c9e43f3
392
393.xword 0xfe04ead3b77c2d11
394
395.xword 0x06d2d7f29e76397c
396
397.xword 0x234c366110eddd38
398
399.xword 0xa80656d4288044bc
400
401.xword 0x12e763fbd8e2970d
402
403.xword 0x7320217fab3eae0e
404
405.xword 0x38683cebedefb5af
406
407
408SECTION .My_User_Section_4v001 TEXT_VA=MY_USER_TEXT_VA001, DATA_VA=MY_USER_DATA_VA001
409attr_text {
410 Name = .My_User_Section_4v001,
411 part_0_ctx_nonzero_tsb_config_2,
412 VA = MY_USER_TEXT_VA001,
413 RA = MY_USER_TEXT_RA001,
414 PA = ra2pa(MY_USER_TEXT_RA001, 0),
415 TTE_Context = PCONTEXT,
416 TTE_V = 1,
417 TTE_NFO = 0,
418 TTE_L = 0,
419 TTE_Soft = 0,
420 TTE_IE = 0,
421 TTE_E = 0,
422 TTE_CP = 1,
423 TTE_CV = 0,
424 TTE_P = 0,
425 TTE_EP = 1,
426 TTE_W = 0,
427 TTE_SW1 = 0,
428 TTE_SW0 = 0,
429 TTE_RSVD1 = 0,
430 TTE_Size = 0,
431 }
432attr_text {
433NAME = .My_User_Section_4v001,
434 hypervisor
435}
436.text
437.global user_code_begin_001
438user_code_begin_001:
439 mov %g0, %i0
440 mov %g0, %i1
441 ta T_CHANGE_HPRIV
442
443 Disable_err_detection
444
445!! rd mondo cpu to make sure that last write was squashed
446 ldxa [%l0]0x25, %l2
447 cmp %l2, %g0
448 bne FAIL
449 nop
450
451!! clear the err
452 stxa %g0, [%l0]0x25
453
454 Enable_err_injection
455
456!! inject err in dev mondo
457 mov 0x3d0, %l0
458 stxa %g0, [%l0]0x25
459
460 Enable_err_detection
461
462!! disable error injection
463 stxa %g0, [%g0]ASI_ERR_INJ
464
465 ldxa [%l0]0x25, %l2
466 brz %i0, FAIL !! chk ipe trap taken
467 mov %g0, %i0
468
469 ta T_CHANGE_NONHPRIV
470 ta T_CHANGE_PRIV
471 brnz %i2, FAIL !! chk dev mondo trap is not taken
472 mov %g0, %i2
473
474 add %g0, 0x3d8, %g1
475 ldxa [%g1]0x25, %l2
476 brz %i0, FAIL !! chk ipe trap taken
477 mov %g0, %i0
478
479 stxa %l1, [%l0]0x25 !! write shd be squashed
480 brz %i0, FAIL !! chk ipe trap taken
481 brnz %i1, FAIL !! chk mondo cpu trap not taken
482 brnz %i2, FAIL !! chk mondo dev trap not taken
483 brnz %i3, FAIL !! chk resumable err trap not taken
484
485
486 setx user_code_begin_002, %g1, %g2
487 jmp %g2
488 nop
489
490FAIL:
491 EXIT_BAD
492
493attr_data {
494 Name = .My_User_Section_4v001,
495 part_0_ctx_nonzero_tsb_config_1,
496 VA = MY_USER_DATA_VA001,
497 RA = MY_USER_DATA_RA001,
498 PA = ra2pa(MY_USER_DATA_RA001, 0),
499 TTE_Context = PCONTEXT,
500 TTE_V = 1,
501 TTE_NFO = 0,
502 TTE_L = 0,
503 TTE_Soft = 0,
504 TTE_IE = 0,
505 TTE_E = 0,
506 TTE_CP = 1,
507 TTE_CV = 0,
508 TTE_P = 0,
509 TTE_EP = 0,
510 TTE_W = 1,
511 TTE_SW1 = 0,
512 TTE_SW0 = 0,
513 TTE_RSVD1 = 0,
514 TTE_Size = 0,
515 }
516attr_data {
517NAME = .My_User_Section_4v001,
518 hypervisor
519}
520.data
521.global user_data_begin_001
522user_data_begin_001:
523.xword 0xfa474991f13e3460
524.xword 0x1446415baecf3609
525.xword 0xe3215e901114ad4b
526.xword 0xf91d897e92d1ee95
527.xword 0x33458a48805d888b
528.xword 0x7f5a3ddb7d8e3c23
529.xword 0xaa80311fb1e17e79
530.xword 0x0f59d0e1ac35dbd4
531.xword 0x057c893bc8fc1e7e
532.xword 0xcfb9e3a29c786cc0
533.xword 0x7257becb4609969e
534.xword 0x4b1896677e83abae
535.xword 0xc2e35a285574f037
536.xword 0x2e42eb5835020e2e
537.xword 0x90775b99929f43cc
538.xword 0x9fac4ae85a4ecd4e
539
540 .word 0x10731
541 .word 0xd027
542 .word 0x1350e
543 .word 0x10e9d
544
545
546SECTION .My_User_Section_4v002 TEXT_VA=MY_USER_TEXT_VA002, DATA_VA=MY_USER_DATA_VA002
547attr_text {
548 Name = .My_User_Section_4v002,
549 part_0_ctx_nonzero_tsb_config_2,
550 VA = MY_USER_TEXT_VA002,
551 RA = MY_USER_TEXT_RA002,
552 PA = ra2pa(MY_USER_TEXT_RA002, 0),
553 TTE_Context = PCONTEXT,
554 TTE_V = 1,
555 TTE_NFO = 0,
556 TTE_L = 0,
557 TTE_Soft = 0,
558 TTE_IE = 0,
559 TTE_E = 0,
560 TTE_CP = 1,
561 TTE_CV = 0,
562 TTE_P = 0,
563 TTE_EP = 1,
564 TTE_W = 0,
565 TTE_SW1 = 0,
566 TTE_SW0 = 0,
567 TTE_RSVD1 = 0,
568 TTE_Size = 0,
569 }
570attr_text {
571NAME = .My_User_Section_4v002,
572 hypervisor
573}
574.text
575.global user_code_begin_002
576user_code_begin_002:
577 mov %g0, %i0
578 mov %g0, %i1
579 mov %g0, %i2
580 mov %g0, %i3
581 ta T_CHANGE_HPRIV
582
583 Disable_err_detection
584
585!! rd mondo cpu to make sure that last write was squashed
586 ldxa [%l0]0x25, %l2
587 brnz %l2, FAIL
588 nop
589
590!! clear the err
591 stxa %g0, [%l0]0x25
592
593 Enable_err_injection
594
595!! inject err in resumable err
596 mov 0x3e0, %l0
597 stxa %g0, [%l0]0x25
598
599 Enable_err_detection
600
601!! disable error injection
602 stxa %g0, [%g0]ASI_ERR_INJ
603
604 ldxa [%l0]0x25, %l2
605 brz %i0, FAIL !! chk ipe trap taken
606 mov %g0, %i0
607
608 ta T_CHANGE_NONHPRIV
609 ta T_CHANGE_PRIV
610
611 brnz %i3, FAIL !!
612 mov %g0, %i3
613
614 add %g0, 0x3e8, %g1
615 ldxa [%g1]0x25, %l2
616 brz %i0, FAIL !! chk ipe trap taken
617 mov %g0, %i0
618 stxa %l1, [%l0]0x25 !! write shd be squashed
619 brz %i0, FAIL !! chk ipe trap taken
620 brnz %i1, FAIL !! chk mondo cpu trap not taken
621 brnz %i2, FAIL !! chk mondo dev trap not taken
622 brnz %i3, FAIL !! chk resumable err trap not taken
623
624 setx user_code_begin_003, %g1, %g2
625 jmp %g2
626 nop
627
628FAIL:
629 EXIT_BAD
630 nop
631
632attr_data {
633 Name = .My_User_Section_4v002,
634 part_0_ctx_nonzero_tsb_config_1,
635 VA = MY_USER_DATA_VA002,
636 RA = MY_USER_DATA_RA002,
637 PA = ra2pa(MY_USER_DATA_RA002, 0),
638 TTE_Context = PCONTEXT,
639 TTE_V = 1,
640 TTE_NFO = 0,
641 TTE_L = 0,
642 TTE_Soft = 0,
643 TTE_IE = 0,
644 TTE_E = 0,
645 TTE_CP = 1,
646 TTE_CV = 0,
647 TTE_P = 0,
648 TTE_EP = 0,
649 TTE_W = 1,
650 TTE_SW1 = 0,
651 TTE_SW0 = 0,
652 TTE_RSVD1 = 0,
653 TTE_Size = 0,
654 }
655attr_data {
656NAME = .My_User_Section_4v002,
657 hypervisor
658}
659.data
660.global user_data_begin_002
661user_data_begin_002:
662.xword 0x050a211e918857f3
663.xword 0x7980bbbf09b95bba
664.xword 0x55f410e2b57433f6
665.xword 0x106c3aa95e2aa3c3
666.xword 0xbcb980bc1bb072d8
667.xword 0x63da435c10b717dd
668.xword 0x375d99be87bef073
669.xword 0x03a5206ac6d08fd2
670.xword 0xfa474991f13e3460
671.xword 0x1446415baecf3609
672.xword 0xe3215e901114ad4b
673.xword 0xf91d897e92d1ee95
674.xword 0x33458a48805d888b
675.xword 0x7f5a3ddb7d8e3c23
676.xword 0xaa80311fb1e17e79
677.xword 0x0f59d0e1ac35dbd4
678
679 .word 0x1eb9
680 .word 0x43ec
681 .word 0xc619
682 .word 0x11a06
683
684
685SECTION .My_User_Section_4v003 TEXT_VA=MY_USER_TEXT_VA003, DATA_VA=MY_USER_DATA_VA003
686attr_text {
687 Name = .My_User_Section_4v003,
688 part_0_ctx_nonzero_tsb_config_2,
689 VA = MY_USER_TEXT_VA003,
690 RA = MY_USER_TEXT_RA003,
691 PA = ra2pa(MY_USER_TEXT_RA003, 0),
692 TTE_Context = PCONTEXT,
693 TTE_V = 1,
694 TTE_NFO = 0,
695 TTE_L = 0,
696 TTE_Soft = 0,
697 TTE_IE = 0,
698 TTE_E = 0,
699 TTE_CP = 1,
700 TTE_CV = 0,
701 TTE_P = 0,
702 TTE_EP = 1,
703 TTE_W = 0,
704 TTE_SW1 = 0,
705 TTE_SW0 = 0,
706 TTE_RSVD1 = 0,
707 TTE_Size = 0,
708 }
709attr_text {
710NAME = .My_User_Section_4v003,
711 hypervisor
712}
713.text
714.global user_code_begin_003
715user_code_begin_003:
716 mov %g0, %i0
717 mov %g0, %i1
718 mov %g0, %i2
719 mov %g0, %i3
720 ta T_CHANGE_HPRIV
721
722 Disable_err_detection
723
724!! rd mondo cpu to make sure that last write was squashed
725 ldxa [%l0]0x25, %l2
726 brnz %l2, FAIL
727 nop
728
729!! clear the err
730 stxa %g0, [%l0]0x25
731
732 Enable_err_injection
733
734!! inject err in resumable err
735 mov 0x3e0, %l0
736 stxa %g0, [%l0]0x25
737
738 Enable_err_detection
739
740!! disable error injection
741 stxa %g0, [%g0]ASI_ERR_INJ
742
743!! Turn off cerer.tsac
744 add %g0, CERER_VA, %g3
745 stxa %g0, [%g3]ASI_CERER
746
747 ldxa [%l0]0x25, %l2
748 brnz %i0, FAIL !! chk ipe trap is not taken
749 mov %g0, %i0
750
751 ta T_CHANGE_NONHPRIV
752 ta T_CHANGE_PRIV
753
754 brnz %i3, FAIL
755 mov %g0, %i3
756
757 ldxa [%l0]0x25, %l2
758 brnz %i0, FAIL !! chk ipe trap not taken
759 mov %g0, %i0
760
761 add %g0, 0xc0, %i4
762 stxa %i4, [%l0]0x25 !! write shd not be squashed and it will clear the error
763 brnz %i0, FAIL !! chk ipe trap not taken
764 brz %i3, FAIL !! chk resumable err trap taken
765
766!! chk write is not squashed
767 cmp %i5, %i4 !! trap handler stores the contenets in i5
768 bne FAIL
769 nop
770
771 setx user_code_begin_004, %g1, %g2
772 jmp %g2
773 nop
774
775FAIL:
776 EXIT_BAD
777 nop
778
779attr_data {
780 Name = .My_User_Section_4v003,
781 part_0_ctx_nonzero_tsb_config_1,
782 VA = MY_USER_DATA_VA003,
783 RA = MY_USER_DATA_RA003,
784 PA = ra2pa(MY_USER_DATA_RA003, 0),
785 TTE_Context = PCONTEXT,
786 TTE_V = 1,
787 TTE_NFO = 0,
788 TTE_L = 0,
789 TTE_Soft = 0,
790 TTE_IE = 0,
791 TTE_E = 0,
792 TTE_CP = 1,
793 TTE_CV = 0,
794 TTE_P = 0,
795 TTE_EP = 0,
796 TTE_W = 1,
797 TTE_SW1 = 0,
798 TTE_SW0 = 0,
799 TTE_RSVD1 = 0,
800 TTE_Size = 0,
801 }
802attr_data {
803NAME = .My_User_Section_4v003,
804 hypervisor
805}
806.data
807.global user_data_begin_003
808user_data_begin_003:
809.xword 0xca12fd23b5b1b1d6
810.xword 0x3428a18f797bd42a
811.xword 0x0d0630dd16ca2db5
812.xword 0x281c49cf3f51a83f
813.xword 0x8fc66b8940c55c03
814.xword 0xfd6f2a2b60aee94c
815.xword 0xec72846b0261894e
816.xword 0xf1bd6c544120f822
817
818.xword 0xefc4e1f1b35853fc
819.xword 0xe790a0c1689eb683
820.xword 0x88c650f170c41710
821.xword 0x614126cf9fc8dca3
822.xword 0x4be2f60911e465ce
823.xword 0x4e22352a0c29c95c
824.xword 0xf18efdf01ce79e24
825.xword 0x294aaa56144d7cf1
826
827 .word 0xdfaa
828 .word 0x39a9
829 .word 0xb967
830 .word 0x280c
831
832
833SECTION .My_User_Section_4v004 TEXT_VA=MY_USER_TEXT_VA004, DATA_VA=MY_USER_DATA_VA004
834attr_text {
835 Name = .My_User_Section_4v004,
836 part_0_ctx_nonzero_tsb_config_2,
837 VA = MY_USER_TEXT_VA004,
838 RA = MY_USER_TEXT_RA004,
839 PA = ra2pa(MY_USER_TEXT_RA004, 0),
840 TTE_Context = PCONTEXT,
841 TTE_V = 1,
842 TTE_NFO = 0,
843 TTE_L = 0,
844 TTE_Soft = 0,
845 TTE_IE = 0,
846 TTE_E = 0,
847 TTE_CP = 1,
848 TTE_CV = 0,
849 TTE_P = 0,
850 TTE_EP = 1,
851 TTE_W = 0,
852 TTE_SW1 = 0,
853 TTE_SW0 = 0,
854 TTE_RSVD1 = 0,
855 TTE_Size = 0,
856 }
857attr_text {
858NAME = .My_User_Section_4v004,
859 hypervisor
860}
861.text
862.global user_code_begin_004
863user_code_begin_004:
864 mov %g0, %i0
865 mov %g0, %i1
866 mov %g0, %i2
867 mov %g0, %i3
868 ta T_CHANGE_HPRIV
869
870 Enable_err_injection
871
872!! inject err in dev mondo
873 mov 0x3d0, %l0
874 stxa %g0, [%l0]0x25
875
876!! disable error injection
877 stxa %g0, [%g0]ASI_ERR_INJ
878
879!! Turn on cerer.tsac
880 setx 0x100000000, %g1, %o2
881 add %g0, CERER_VA, %g3
882 stxa %o2, [%g3]ASI_CERER
883
884!! Turn off ceter.pscce
885 add %g0, CETER_VA, %g3
886 stxa %g0, [%g3]ASI_CETER
887
888 ldxa [%l0]0x25, %l2
889 brnz %i0, FAIL !! chk ipe trap is not taken
890 mov %g0, %i0
891
892 ta T_CHANGE_NONHPRIV
893 ta T_CHANGE_PRIV
894
895 brnz %i2, FAIL
896 mov %g0, %i2
897
898 ldxa [%l0]0x25, %l2
899 brnz %i0, FAIL !! chk ipe trap not taken
900 mov %g0, %i0
901
902 add %g0, 0xc0, %g1
903 stxa %g1, [%l0]0x25 !! write shd not be squashed
904 brnz %i0, FAIL !! chk ipe trap taken
905 brz %i2, FAIL !! chk dev mondo err trap taken
906
907!! chk write is not squashed
908 cmp %i5, %g1
909 bne FAIL
910 mov %g0, %i0
911
912 setx user_code_begin_005, %g1, %g2
913 jmp %g2
914 nop
915
916FAIL:
917 EXIT_BAD
918 nop
919
920
921attr_data {
922 Name = .My_User_Section_4v004,
923 part_0_ctx_nonzero_tsb_config_1,
924 VA = MY_USER_DATA_VA004,
925 RA = MY_USER_DATA_RA004,
926 PA = ra2pa(MY_USER_DATA_RA004, 0),
927 TTE_Context = PCONTEXT,
928 TTE_V = 1,
929 TTE_NFO = 0,
930 TTE_L = 0,
931 TTE_Soft = 0,
932 TTE_IE = 0,
933 TTE_E = 0,
934 TTE_CP = 1,
935 TTE_CV = 0,
936 TTE_P = 0,
937 TTE_EP = 0,
938 TTE_W = 1,
939 TTE_SW1 = 0,
940 TTE_SW0 = 0,
941 TTE_RSVD1 = 0,
942 TTE_Size = 0,
943 }
944attr_data {
945NAME = .My_User_Section_4v004,
946 hypervisor
947}
948.data
949.global user_data_begin_004
950user_data_begin_004:
951.xword 0xefc4e1f1b35853fc
952.xword 0xe790a0c1689eb683
953.xword 0x88c650f170c41710
954.xword 0x614126cf9fc8dca3
955.xword 0x4be2f60911e465ce
956.xword 0x4e22352a0c29c95c
957.xword 0xf18efdf01ce79e24
958.xword 0x294aaa56144d7cf1
959.xword 0xe0066361bd9fcb86
960.xword 0xea22901c101f6f52
961.xword 0x806faa2171350467
962.xword 0xff54f2cd06a0d342
963.xword 0x566bff718cddb905
964.xword 0x6d367bc4d165d37a
965.xword 0x5efc42b18f920522
966.xword 0x584c92dec4bc66de
967 .word 0x4069
968 .word 0x41ed
969 .word 0x14c07
970 .word 0x29de
971
972
973SECTION .My_User_Section_4v005 TEXT_VA=MY_USER_TEXT_VA005, DATA_VA=MY_USER_DATA_VA005
974attr_text {
975 Name = .My_User_Section_4v005,
976 part_0_ctx_nonzero_tsb_config_3,
977 VA = MY_USER_TEXT_VA005,
978 RA = MY_USER_TEXT_RA005,
979 PA = ra2pa(MY_USER_TEXT_RA005, 0),
980 TTE_Context = PCONTEXT,
981 TTE_V = 1,
982 TTE_NFO = 0,
983 TTE_L = 0,
984 TTE_Soft = 0,
985 TTE_IE = 0,
986 TTE_E = 0,
987 TTE_CP = 1,
988 TTE_CV = 0,
989 TTE_P = 0,
990 TTE_EP = 1,
991 TTE_W = 0,
992 TTE_SW1 = 0,
993 TTE_SW0 = 0,
994 TTE_RSVD1 = 0,
995 TTE_Size = 0,
996 }
997attr_text {
998NAME = .My_User_Section_4v005,
999 hypervisor
1000}
1001! Use done inst. to catch errors in TSA
1002.text
1003.global user_code_begin_005
1004user_code_begin_005:
1005
1006 ta T_CHANGE_HPRIV
1007 Enable_err_injection
1008 mov 0x3c0, %l0
1009 mov 0x80, %l1
1010 stxa %l1, [%l0]0x25 !! store with err
1011
1012 ta T_CHANGE_NONHPRIV
1013 ta T_CHANGE_PRIV
1014
1015 brz %i1, FAIL !! tcpu mondo trap shd be taken
1016 mov %g0, %i2
1017
1018 EXIT_GOOD
1019FAIL: EXIT_BAD
1020 nop
1021
1022attr_data {
1023 Name = .My_User_Section_4v005,
1024 part_0_ctx_nonzero_tsb_config_1,
1025 VA = MY_USER_DATA_VA005,
1026 RA = MY_USER_DATA_RA005,
1027 PA = ra2pa(MY_USER_DATA_RA005, 0),
1028 TTE_Context = PCONTEXT,
1029 TTE_V = 1,
1030 TTE_NFO = 0,
1031 TTE_L = 0,
1032 TTE_Soft = 0,
1033 TTE_IE = 0,
1034 TTE_E = 0,
1035 TTE_CP = 1,
1036 TTE_CV = 0,
1037 TTE_P = 0,
1038 TTE_EP = 0,
1039 TTE_W = 1,
1040 TTE_SW1 = 0,
1041 TTE_SW0 = 0,
1042 TTE_RSVD1 = 0,
1043 TTE_Size = 0,
1044 }
1045attr_data {
1046NAME = .My_User_Section_4v005,
1047 hypervisor
1048}
1049.data
1050.global user_data_begin_005
1051user_data_begin_005:
1052.xword 0xefc4e1f1b35853fc
1053.xword 0xe790a0c1689eb683
1054.xword 0x88c650f170c41710
1055.xword 0x614126cf9fc8dca3
1056.xword 0x4be2f60911e465ce
1057.xword 0x4e22352a0c29c95c
1058.xword 0xf18efdf01ce79e24
1059.xword 0x294aaa56144d7cf1
1060.xword 0xe0066361bd9fcb86
1061.xword 0xea22901c101f6f52
1062.xword 0x806faa2171350467
1063.xword 0xff54f2cd06a0d342
1064.xword 0x566bff718cddb905
1065.xword 0x6d367bc4d165d37a
1066.xword 0x5efc42b18f920522
1067.xword 0x4be2f60911e465ce
1068.xword 0x4e22352a0c29c95c
1069.xword 0xf18efdf01ce79e24
1070 .word 0xf93b
1071 .word 0xe34b
1072 .word 0x127e6
1073 .word 0xd915
1074
1075
1076SECTION .My_User_Section_4v006 TEXT_VA=MY_USER_TEXT_VA006, DATA_VA=MY_USER_DATA_VA006
1077attr_text {
1078 Name = .My_User_Section_4v006,
1079 part_0_ctx_nonzero_tsb_config_3,
1080 VA = MY_USER_TEXT_VA006,
1081 RA = MY_USER_TEXT_RA006,
1082 PA = ra2pa(MY_USER_TEXT_RA006, 0),
1083 TTE_Context = PCONTEXT,
1084 TTE_V = 1,
1085 TTE_NFO = 0,
1086 TTE_L = 0,
1087 TTE_Soft = 0,
1088 TTE_IE = 0,
1089 TTE_E = 0,
1090 TTE_CP = 1,
1091 TTE_CV = 0,
1092 TTE_P = 0,
1093 TTE_EP = 1,
1094 TTE_W = 0,
1095 TTE_SW1 = 0,
1096 TTE_SW0 = 0,
1097 TTE_RSVD1 = 0,
1098 TTE_Size = 0,
1099 }
1100attr_text {
1101NAME = .My_User_Section_4v006,
1102 hypervisor
1103}
1104! Use retry inst. to catch errors in TSA
1105.text
1106.global user_code_begin_006
1107user_code_begin_006:
1108
1109FAIL: EXIT_BAD
1110 nop
1111
1112attr_data {
1113 Name = .My_User_Section_4v006,
1114 part_0_ctx_nonzero_tsb_config_1,
1115 VA = MY_USER_DATA_VA006,
1116 RA = MY_USER_DATA_RA006,
1117 PA = ra2pa(MY_USER_DATA_RA006, 0),
1118 TTE_Context = PCONTEXT,
1119 TTE_V = 1,
1120 TTE_NFO = 0,
1121 TTE_L = 0,
1122 TTE_Soft = 0,
1123 TTE_IE = 0,
1124 TTE_E = 0,
1125 TTE_CP = 1,
1126 TTE_CV = 0,
1127 TTE_P = 0,
1128 TTE_EP = 0,
1129 TTE_W = 1,
1130 TTE_SW1 = 0,
1131 TTE_SW0 = 0,
1132 TTE_RSVD1 = 0,
1133 TTE_Size = 0,
1134 }
1135attr_data {
1136NAME = .My_User_Section_4v006,
1137 hypervisor
1138}
1139.data
1140.global user_data_begin_006
1141user_data_begin_006:
1142 .word 0x7551
1143 .word 0x1535d
1144 .word 0x59
1145 .word 0x72f7
1146
1147
1148SECTION .My_User_Section_4v007 TEXT_VA=MY_USER_TEXT_VA007, DATA_VA=MY_USER_DATA_VA007
1149attr_text {
1150 Name = .My_User_Section_4v007,
1151 part_0_ctx_nonzero_tsb_config_3,
1152 VA = MY_USER_TEXT_VA007,
1153 RA = MY_USER_TEXT_RA007,
1154 PA = ra2pa(MY_USER_TEXT_RA007, 0),
1155 TTE_Context = PCONTEXT,
1156 TTE_V = 1,
1157 TTE_NFO = 0,
1158 TTE_L = 0,
1159 TTE_Soft = 0,
1160 TTE_IE = 0,
1161 TTE_E = 0,
1162 TTE_CP = 1,
1163 TTE_CV = 0,
1164 TTE_P = 0,
1165 TTE_EP = 1,
1166 TTE_W = 0,
1167 TTE_SW1 = 0,
1168 TTE_SW0 = 0,
1169 TTE_RSVD1 = 0,
1170 TTE_Size = 0,
1171 }
1172attr_text {
1173NAME = .My_User_Section_4v007,
1174 hypervisor
1175}
1176
1177!! inject error in all the 4 ways and do special memops and chk the effect.
1178!! Also do nc accesses
1179
1180.text
1181.global user_code_begin_007
1182user_code_begin_007:
1183
1184FAIL: EXIT_BAD
1185 nop
1186
1187
1188attr_data {
1189 Name = .My_User_Section_4v007,
1190 part_0_ctx_nonzero_tsb_config_1,
1191 VA = MY_USER_DATA_VA007,
1192 RA = MY_USER_DATA_RA007,
1193 PA = ra2pa(MY_USER_DATA_RA007, 0),
1194 TTE_Context = PCONTEXT,
1195 TTE_V = 1,
1196 TTE_NFO = 0,
1197 TTE_L = 0,
1198 TTE_Soft = 0,
1199 TTE_IE = 0,
1200 TTE_E = 0,
1201 TTE_CP = 1,
1202 TTE_CV = 0,
1203 TTE_P = 0,
1204 TTE_EP = 0,
1205 TTE_W = 1,
1206 TTE_SW1 = 0,
1207 TTE_SW0 = 0,
1208 TTE_RSVD1 = 0,
1209 TTE_Size = 0,
1210 }
1211attr_data {
1212NAME = .My_User_Section_4v007,
1213 hypervisor
1214}
1215.data
1216.global user_data_begin_007
1217user_data_begin_007:
1218 .word 0x14a3d
1219 .word 0x798d
1220 .word 0xfdd5
1221 .word 0x9d05
1222
1223
1224SECTION .My_User_Section_4v008 TEXT_VA=MY_USER_TEXT_VA008, DATA_VA=MY_USER_DATA_VA008
1225attr_text {
1226 Name = .My_User_Section_4v008,
1227 part_0_ctx_nonzero_tsb_config_3,
1228 VA = MY_USER_TEXT_VA008,
1229 RA = MY_USER_TEXT_RA008,
1230 PA = ra2pa(MY_USER_TEXT_RA008, 0),
1231 TTE_Context = PCONTEXT,
1232 TTE_V = 1,
1233 TTE_NFO = 0,
1234 TTE_L = 0,
1235 TTE_Soft = 0,
1236 TTE_IE = 0,
1237 TTE_E = 0,
1238 TTE_CP = 1,
1239 TTE_CV = 0,
1240 TTE_P = 0,
1241 TTE_EP = 1,
1242 TTE_W = 0,
1243 TTE_SW1 = 0,
1244 TTE_SW0 = 0,
1245 TTE_RSVD1 = 0,
1246 TTE_Size = 0,
1247 }
1248attr_text {
1249NAME = .My_User_Section_4v008,
1250 hypervisor
1251}
1252.text
1253.global user_code_begin_008
1254user_code_begin_008:
1255
1256FAIL: EXIT_BAD
1257 nop
1258
1259attr_data {
1260 Name = .My_User_Section_4v008,
1261 part_0_ctx_nonzero_tsb_config_1,
1262 VA = MY_USER_DATA_VA008,
1263 RA = MY_USER_DATA_RA008,
1264 PA = ra2pa(MY_USER_DATA_RA008, 0),
1265 TTE_Context = PCONTEXT,
1266 TTE_V = 1,
1267 TTE_NFO = 0,
1268 TTE_L = 0,
1269 TTE_Soft = 0,
1270 TTE_IE = 0,
1271 TTE_E = 0,
1272 TTE_CP = 1,
1273 TTE_CV = 0,
1274 TTE_P = 0,
1275 TTE_EP = 0,
1276 TTE_W = 1,
1277 TTE_SW1 = 0,
1278 TTE_SW0 = 0,
1279 TTE_RSVD1 = 0,
1280 TTE_Size = 0,
1281 }
1282attr_data {
1283NAME = .My_User_Section_4v008,
1284 hypervisor
1285}
1286.data
1287.global user_data_begin_008
1288user_data_begin_008:
1289 .word 0xfd87
1290 .word 0x6aa3
1291 .word 0x4d58
1292 .word 0x547a
1293
1294
1295SECTION .My_User_Section_4v009 TEXT_VA=MY_USER_TEXT_VA009, DATA_VA=MY_USER_DATA_VA009
1296attr_text {
1297 Name = .My_User_Section_4v009,
1298 part_0_ctx_nonzero_tsb_config_3,
1299 VA = MY_USER_TEXT_VA009,
1300 RA = MY_USER_TEXT_RA009,
1301 PA = ra2pa(MY_USER_TEXT_RA009, 0),
1302 TTE_Context = PCONTEXT,
1303 TTE_V = 1,
1304 TTE_NFO = 0,
1305 TTE_L = 0,
1306 TTE_Soft = 0,
1307 TTE_IE = 0,
1308 TTE_E = 0,
1309 TTE_CP = 1,
1310 TTE_CV = 0,
1311 TTE_P = 0,
1312 TTE_EP = 1,
1313 TTE_W = 0,
1314 TTE_SW1 = 0,
1315 TTE_SW0 = 0,
1316 TTE_RSVD1 = 0,
1317 TTE_Size = 0,
1318 }
1319attr_text {
1320NAME = .My_User_Section_4v009,
1321 hypervisor
1322}
1323!! inject errors but don't enable cerer.tsac. Chk that the error is not detected.
1324.text
1325.global user_code_begin_009
1326user_code_begin_009:
1327
1328FAIL: EXIT_BAD
1329 nop
1330
1331attr_data {
1332 Name = .My_User_Section_4v009,
1333 part_0_ctx_nonzero_tsb_config_1,
1334 VA = MY_USER_DATA_VA009,
1335 RA = MY_USER_DATA_RA009,
1336 PA = ra2pa(MY_USER_DATA_RA009, 0),
1337 TTE_Context = PCONTEXT,
1338 TTE_V = 1,
1339 TTE_NFO = 0,
1340 TTE_L = 0,
1341 TTE_Soft = 0,
1342 TTE_IE = 0,
1343 TTE_E = 0,
1344 TTE_CP = 0,
1345 TTE_CV = 0,
1346 TTE_P = 0,
1347 TTE_EP = 0,
1348 TTE_W = 1,
1349 TTE_SW1 = 0,
1350 TTE_SW0 = 0,
1351 TTE_RSVD1 = 0,
1352 TTE_Size = 0,
1353 }
1354attr_data {
1355NAME = .My_User_Section_4v009,
1356 hypervisor
1357}
1358.data
1359.global user_data_begin_009
1360user_data_begin_009:
1361.xword 0x9f9cf317c6bf6c3e
1362.xword 0x6e5072dea1536687
1363.xword 0xecd6c1a2d916c251
1364.xword 0x3ae5485cda37f88a
1365.xword 0x1a2c7d4ed5edb96c
1366.xword 0x9e3b9e188934db9d
1367.xword 0x6fc59d2722a580de
1368.xword 0x69b382cc58c91552
1369
1370 .word 0x26f5
1371 .word 0x14ad8
1372 .word 0x6417
1373 .word 0x17560
1374
1375
1376SECTION .My_User_Section_4v010 TEXT_VA=MY_USER_TEXT_VA010, DATA_VA=MY_USER_DATA_VA010
1377attr_text {
1378 Name = .My_User_Section_4v010,
1379 part_0_ctx_nonzero_tsb_config_2,
1380 VA = MY_USER_TEXT_VA010,
1381 RA = MY_USER_TEXT_RA010,
1382 PA = ra2pa(MY_USER_TEXT_RA010, 0),
1383 TTE_Context = PCONTEXT,
1384 TTE_V = 1,
1385 TTE_NFO = 0,
1386 TTE_L = 0,
1387 TTE_Soft = 0,
1388 TTE_IE = 0,
1389 TTE_E = 0,
1390 TTE_CP = 1,
1391 TTE_CV = 0,
1392 TTE_P = 0,
1393 TTE_EP = 1,
1394 TTE_W = 0,
1395 TTE_SW1 = 0,
1396 TTE_SW0 = 0,
1397 TTE_RSVD1 = 0,
1398 TTE_Size = 0,
1399 }
1400attr_text {
1401NAME = .My_User_Section_4v010,
1402 hypervisor
1403}
1404!! inject errors, enable cerer.tsac. Turn off CETER.PSCCE.
1405!! chk that the stores are not committed and the trap is
1406!! not taken.
1407.text
1408.global user_code_begin_010
1409user_code_begin_010:
1410
1411
1412 EXIT_GOOD
1413 nop
1414
1415FAIL: EXIT_BAD
1416 nop
1417
1418attr_data {
1419 Name = .My_User_Section_4v010,
1420 part_0_ctx_nonzero_tsb_config_1,
1421 VA = MY_USER_DATA_VA010,
1422 RA = MY_nc_DATA_RA010,
1423 PA = ra2pa(MY_nc_DATA_RA010, 0),
1424 TTE_Context = PCONTEXT,
1425 TTE_V = 1,
1426 TTE_NFO = 0,
1427 TTE_L = 0,
1428 TTE_Soft = 0,
1429 TTE_IE = 0,
1430 TTE_E = 0,
1431 TTE_CP = 0,
1432 TTE_CV = 0,
1433 TTE_P = 0,
1434 TTE_EP = 0,
1435 TTE_W = 1,
1436 TTE_SW1 = 0,
1437 TTE_SW0 = 0,
1438 TTE_RSVD1 = 0,
1439 TTE_Size = 0,
1440 }
1441attr_data {
1442NAME = .My_User_Section_4v010,
1443 hypervisor
1444}
1445.data
1446.global user_data_begin_010
1447user_data_begin_010:
1448.xword 0x54007d9c96e7a9ff
1449.xword 0x930027e0327f4f59
1450.xword 0xe0dcea6ac80eb2ff
1451.xword 0x970ef238b6fd38f3
1452.xword 0x1044dc7715f25a67
1453.xword 0xd7a62736b8af1568
1454.xword 0x0f5fcf05ff8a547a
1455.xword 0x853766fbc6f6eaa8
1456
1457 .word 0xc750
1458 .word 0x36b
1459 .word 0x4f6d
1460 .word 0x108ec
1461
1462
1463SECTION .My_User_Section_4v011 TEXT_VA=MY_USER_TEXT_VA011, DATA_VA=MY_USER_DATA_VA011
1464attr_text {
1465 Name = .My_User_Section_4v011,
1466 part_0_ctx_nonzero_tsb_config_2,
1467 VA = MY_USER_TEXT_VA011,
1468 RA = MY_USER_TEXT_RA011,
1469 PA = ra2pa(MY_USER_TEXT_RA011, 0),
1470 TTE_Context = PCONTEXT,
1471 TTE_V = 1,
1472 TTE_NFO = 0,
1473 TTE_L = 0,
1474 TTE_Soft = 0,
1475 TTE_IE = 0,
1476 TTE_E = 0,
1477 TTE_CP = 1,
1478 TTE_CV = 0,
1479 TTE_P = 0,
1480 TTE_EP = 1,
1481 TTE_W = 0,
1482 TTE_SW1 = 0,
1483 TTE_SW0 = 0,
1484 TTE_RSVD1 = 0,
1485 TTE_Size = 0,
1486 }
1487attr_text {
1488NAME = .My_User_Section_4v011,
1489 hypervisor
1490}
1491.text
1492.global user_code_begin_011
1493user_code_begin_011:
1494
1495FAIL: EXIT_BAD
1496 nop
1497
1498attr_data {
1499 Name = .My_User_Section_4v011,
1500 part_0_ctx_nonzero_tsb_config_1,
1501 VA = MY_USER_DATA_VA011,
1502 RA = MY_nc_DATA_RA011,
1503 PA = ra2pa(MY_nc_DATA_RA011, 0),
1504 TTE_Context = PCONTEXT,
1505 TTE_V = 1,
1506 TTE_NFO = 0,
1507 TTE_L = 0,
1508 TTE_Soft = 0,
1509 TTE_IE = 0,
1510 TTE_E = 0,
1511 TTE_CP = 0,
1512 TTE_CV = 0,
1513 TTE_P = 0,
1514 TTE_EP = 0,
1515 TTE_W = 1,
1516 TTE_SW1 = 0,
1517 TTE_SW0 = 0,
1518 TTE_RSVD1 = 0,
1519 TTE_Size = 0,
1520 }
1521attr_data {
1522NAME = .My_User_Section_4v011,
1523 hypervisor
1524}
1525.data
1526.global user_data_begin_011
1527user_data_begin_011:
1528.xword 0xe2faba6d06c28930
1529.xword 0xeb17ac2bc38a58c1
1530.xword 0xb82aeb3b264dd259
1531.xword 0xb68211db06aea937
1532.xword 0x05082906aae4d7b4
1533.xword 0x6ddfd83f3e9a6b87
1534.xword 0x15f5c009f48a5dfe
1535.xword 0x57519c7e517d5a47
1536
1537 .word 0x1684b
1538 .word 0xe9eb
1539 .word 0x39e
1540 .word 0x15b8
1541
1542
1543SECTION .My_User_Section_4v012 TEXT_VA=MY_USER_TEXT_VA012, DATA_VA=MY_USER_DATA_VA012
1544attr_text {
1545 Name = .My_User_Section_4v012,
1546 part_0_ctx_nonzero_tsb_config_2,
1547 VA = MY_USER_TEXT_VA012,
1548 RA = MY_USER_TEXT_RA012,
1549 PA = ra2pa(MY_USER_TEXT_RA012, 0),
1550 TTE_Context = PCONTEXT,
1551 TTE_V = 1,
1552 TTE_NFO = 0,
1553 TTE_L = 0,
1554 TTE_Soft = 0,
1555 TTE_IE = 0,
1556 TTE_E = 0,
1557 TTE_CP = 1,
1558 TTE_CV = 0,
1559 TTE_P = 0,
1560 TTE_EP = 1,
1561 TTE_W = 0,
1562 TTE_SW1 = 0,
1563 TTE_SW0 = 0,
1564 TTE_RSVD1 = 0,
1565 TTE_Size = 0,
1566 }
1567attr_text {
1568NAME = .My_User_Section_4v012,
1569 hypervisor
1570}
1571.text
1572.global user_code_begin_012
1573user_code_begin_012:
1574
1575FAIL: EXIT_BAD
1576 nop
1577
1578attr_data {
1579 Name = .My_User_Section_4v012,
1580 part_0_ctx_nonzero_tsb_config_1,
1581 VA = MY_USER_DATA_VA012,
1582 RA = MY_nc_DATA_RA012,
1583 PA = ra2pa(MY_nc_DATA_RA012, 0),
1584 TTE_Context = PCONTEXT,
1585 TTE_V = 1,
1586 TTE_NFO = 0,
1587 TTE_L = 0,
1588 TTE_Soft = 0,
1589 TTE_IE = 0,
1590 TTE_E = 0,
1591 TTE_CP = 0,
1592 TTE_CV = 0,
1593 TTE_P = 0,
1594 TTE_EP = 0,
1595 TTE_W = 1,
1596 TTE_SW1 = 0,
1597 TTE_SW0 = 0,
1598 TTE_RSVD1 = 0,
1599 TTE_Size = 0,
1600 }
1601attr_data {
1602NAME = .My_User_Section_4v012,
1603 hypervisor
1604}
1605.data
1606.global user_data_begin_012
1607user_data_begin_012:
1608.xword 0xe7719c91a7d39000
1609.xword 0x897bf53fdfab4acf
1610.xword 0x33641c943c252a55
1611.xword 0x7a6152bedcb6d45a
1612.xword 0xc402d285b09a5315
1613.xword 0x113780fae604dd95
1614.xword 0xf4b4dc9fdda745da
1615.xword 0x4541714dba5a4e49
1616
1617 .word 0x1001b
1618 .word 0x8080
1619 .word 0x1008a
1620 .word 0x9431
1621
1622
1623SECTION .My_User_Section_4v013 TEXT_VA=MY_USER_TEXT_VA013, DATA_VA=MY_USER_DATA_VA013
1624attr_text {
1625 Name = .My_User_Section_4v013,
1626 part_0_ctx_nonzero_tsb_config_2,
1627 VA = MY_USER_TEXT_VA013,
1628 RA = MY_USER_TEXT_RA013,
1629 PA = ra2pa(MY_USER_TEXT_RA013, 0),
1630 TTE_Context = PCONTEXT,
1631 TTE_V = 1,
1632 TTE_NFO = 0,
1633 TTE_L = 0,
1634 TTE_Soft = 0,
1635 TTE_IE = 0,
1636 TTE_E = 0,
1637 TTE_CP = 1,
1638 TTE_CV = 0,
1639 TTE_P = 0,
1640 TTE_EP = 1,
1641 TTE_W = 0,
1642 TTE_SW1 = 0,
1643 TTE_SW0 = 0,
1644 TTE_RSVD1 = 0,
1645 TTE_Size = 0,
1646 }
1647attr_text {
1648NAME = .My_User_Section_4v013,
1649 hypervisor
1650}
1651.text
1652.global user_code_begin_013
1653user_code_begin_013:
1654 add %g0, 4, %l0 !! err in all ways
1655
1656
1657 EXIT_GOOD
1658 nop
1659
1660FAIL:
1661 EXIT_BAD
1662 nop
1663attr_data {
1664 Name = .My_User_Section_4v013,
1665 part_0_ctx_nonzero_tsb_config_1,
1666 VA = MY_USER_DATA_VA013,
1667 RA = MY_nc_DATA_RA013,
1668 PA = ra2pa(MY_nc_DATA_RA013, 0),
1669 TTE_Context = PCONTEXT,
1670 TTE_V = 1,
1671 TTE_NFO = 0,
1672 TTE_L = 0,
1673 TTE_Soft = 0,
1674 TTE_IE = 0,
1675 TTE_E = 0,
1676 TTE_CP = 0,
1677 TTE_CV = 0,
1678 TTE_P = 0,
1679 TTE_EP = 0,
1680 TTE_W = 1,
1681 TTE_SW1 = 0,
1682 TTE_SW0 = 0,
1683 TTE_RSVD1 = 0,
1684 TTE_Size = 0,
1685 }
1686attr_data {
1687NAME = .My_User_Section_4v013,
1688 hypervisor
1689}
1690.data
1691.global user_data_begin_013
1692user_data_begin_013:
1693.xword 0xf9d14275b20204ee
1694.xword 0xcbd5e7e62934200b
1695.xword 0x88d5a3eb459d773d
1696.xword 0x1113616971dbf6ad
1697.xword 0x9208e6261dbbac60
1698.xword 0x6ad4e3984dc85a86
1699.xword 0x5b8aaa327733b2bc
1700.xword 0x0178b83acce0d7fa
1701.xword 0xd6cc7f8e1fe93d33
1702 .word 0x137a8
1703 .word 0xa14
1704 .word 0xc9a1
1705 .word 0x14d93
1706
1707
1708.global INT_PROC_ERR_HANDLER
1709
1710SECTION .HTRAPS
1711.text
1712
1713INT_PROC_ERR_HANDLER:
1714!! read the dsfsr
1715 add %g0, SFSR_VA, %o1
1716 ldxa [%o1]ASI_DSFSR, %o2 !! read the dsfsr
1717 cmp %o2, DSFSR_TSAC
1718 bne FAIL
1719
1720 add %g0, 1, %i0
1721 done
1722 nop
1723
1724FAIL: EXIT_BAD
1725 nop
1726