Merge tag 'v3.3.7' into 3.3/master
[zen-stable.git] / arch / sparc / kernel / misctrap.S
blob753b4f031bfb710b77cefa78b74ade61a9d8850c
1 #ifdef CONFIG_KGDB
2         .globl          arch_kgdb_breakpoint
3         .type           arch_kgdb_breakpoint,#function
4 arch_kgdb_breakpoint:
5         ta              0x72
6         retl
7          nop
8         .size           arch_kgdb_breakpoint,.-arch_kgdb_breakpoint
9 #endif
11         .type           __do_privact,#function
12 __do_privact:
13         mov             TLB_SFSR, %g3
14         stxa            %g0, [%g3] ASI_DMMU     ! Clear FaultValid bit
15         membar          #Sync
16         sethi           %hi(109f), %g7
17         ba,pt           %xcc, etrap
18 109:    or              %g7, %lo(109b), %g7
19         call            do_privact
20          add            %sp, PTREGS_OFF, %o0
21         ba,pt           %xcc, rtrap
22          nop
23         .size           __do_privact,.-__do_privact
25         .type           do_mna,#function
26 do_mna:
27         rdpr            %tl, %g3
28         cmp             %g3, 1
30         /* Setup %g4/%g5 now as they are used in the
31          * winfixup code.
32          */
33         mov             TLB_SFSR, %g3
34         mov             DMMU_SFAR, %g4
35         ldxa            [%g4] ASI_DMMU, %g4
36         ldxa            [%g3] ASI_DMMU, %g5
37         stxa            %g0, [%g3] ASI_DMMU     ! Clear FaultValid bit
38         membar          #Sync
39         bgu,pn          %icc, winfix_mna
40          rdpr           %tpc, %g3
42 1:      sethi           %hi(109f), %g7
43         ba,pt           %xcc, etrap
44 109:     or             %g7, %lo(109b), %g7
45         mov             %l4, %o1
46         mov             %l5, %o2
47         call            mem_address_unaligned
48          add            %sp, PTREGS_OFF, %o0
49         ba,pt           %xcc, rtrap
50          nop
51         .size           do_mna,.-do_mna
53         .type           do_lddfmna,#function
54 do_lddfmna:
55         sethi           %hi(109f), %g7
56         mov             TLB_SFSR, %g4
57         ldxa            [%g4] ASI_DMMU, %g5
58         stxa            %g0, [%g4] ASI_DMMU     ! Clear FaultValid bit
59         membar          #Sync
60         mov             DMMU_SFAR, %g4
61         ldxa            [%g4] ASI_DMMU, %g4
62         ba,pt           %xcc, etrap
63 109:     or             %g7, %lo(109b), %g7
64         mov             %l4, %o1
65         mov             %l5, %o2
66         call            handle_lddfmna
67          add            %sp, PTREGS_OFF, %o0
68         ba,pt           %xcc, rtrap
69          nop
70         .size           do_lddfmna,.-do_lddfmna
72         .type           do_stdfmna,#function
73 do_stdfmna:
74         sethi           %hi(109f), %g7
75         mov             TLB_SFSR, %g4
76         ldxa            [%g4] ASI_DMMU, %g5
77         stxa            %g0, [%g4] ASI_DMMU     ! Clear FaultValid bit
78         membar          #Sync
79         mov             DMMU_SFAR, %g4
80         ldxa            [%g4] ASI_DMMU, %g4
81         ba,pt           %xcc, etrap
82 109:     or             %g7, %lo(109b), %g7
83         mov             %l4, %o1
84         mov             %l5, %o2
85         call            handle_stdfmna
86          add            %sp, PTREGS_OFF, %o0
87         ba,pt           %xcc, rtrap
88          nop
89         .size           do_stdfmna,.-do_stdfmna
91         .type           breakpoint_trap,#function
92 breakpoint_trap:
93         call            sparc_breakpoint
94          add            %sp, PTREGS_OFF, %o0
95         ba,pt           %xcc, rtrap
96          nop
97         .size           breakpoint_trap,.-breakpoint_trap