1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 mov TLB_SFSR, %g1
19 stxa %g0, [%g1] ASI_DMMU ! Clear FaultValid bit
20 membar #Sync ! Synchronize stores
21 rdpr %pstate, %g5 ! Move into alt-globals
22 wrpr %g5, PSTATE_AG|PSTATE_MG, %pstate
23 rdpr %tl, %g1 ! Need a winfixup?
24 cmp %g1, 1 ! Trap level >1?
25 mov TLB_TAG_ACCESS, %g4 ! For reload of vaddr
26
27
28 ldxa [%g4] ASI_DMMU, %g5 ! Put tagaccess in %g5
29 srlx %g5, PAGE_SHIFT, %g5
30 sllx %g5, PAGE_SHIFT, %g5 ! Clear context ID bits
31 bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup
32 mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4
33 ba,pt %xcc, sparc64_realfault_common ! Nope, normal fault
34 nop
35 nop
36
37
38 nop
39 nop
40 nop
41 nop
42 nop
43 nop
44 nop
45 nop
46
47
48 nop
49 nop
50 nop
51 nop
52 nop
53 nop
54 nop
55 nop