initial commit with v2.6.9
[linux-2.6.9-moxart.git] / arch / sparc64 / kernel / dtlb_prot.S
blobd848bb7374bb4efe539e1e504c11339c5be993ae
1 /* $Id: dtlb_prot.S,v 1.22 2001/04/11 23:40:32 davem Exp $
2  * dtlb_prot.S: DTLB protection trap strategy.
3  *              This is included directly into the trap table.
4  *
5  * Copyright (C) 1996,1998 David S. Miller (davem@redhat.com)
6  * Copyright (C) 1997,1998 Jakub Jelinek   (jj@ultra.linux.cz)
7  */
9 /* Ways we can get here:
10  *
11  * [TL == 0] 1) User stores to readonly pages.
12  * [TL == 0] 2) Nucleus stores to user readonly pages.
13  * [TL >  0] 3) Nucleus stores to user readonly stack frame.
14  */
16 /* PROT ** ICACHE line 1: User DTLB protection trap     */
17         stxa            %g0, [%g1] ASI_DMMU             ! Clear SFSR FaultValid bit
18         membar          #Sync                           ! Synchronize ASI stores
19         rdpr            %pstate, %g5                    ! Move into alternate globals
20         wrpr            %g5, PSTATE_AG|PSTATE_MG, %pstate
21         rdpr            %tl, %g1                        ! Need to do a winfixup?
22         cmp             %g1, 1                          ! Trap level >1?
23         mov             TLB_TAG_ACCESS, %g4             ! Prepare reload of vaddr
24         nop
26 /* PROT ** ICACHE line 2: More real fault processing */
27         bgu,pn          %xcc, winfix_trampoline         ! Yes, perform winfixup
28          ldxa           [%g4] ASI_DMMU, %g5             ! Put tagaccess in %g5
29         ba,pt           %xcc, sparc64_realfault_common  ! Nope, normal fault
30          mov            FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4
31         nop
32         nop
33         nop
34         nop
36 /* PROT ** ICACHE line 3: Unused...     */
37         nop
38         nop
39         nop
40         nop
41         nop
42         nop
43         nop
44         nop
46 /* PROT ** ICACHE line 4: Unused...     */
47         nop
48         nop
49         nop
50         nop
51         nop
52         nop
53         nop
54         nop