1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifdef CONFIG_KGDB |
3 | .globl arch_kgdb_breakpoint |
4 | .type arch_kgdb_breakpoint,#function |
5 | arch_kgdb_breakpoint: |
6 | ta 0x72 |
7 | retl |
8 | nop |
9 | .size arch_kgdb_breakpoint,.-arch_kgdb_breakpoint |
10 | #endif |
11 | |
12 | .type __do_privact,#function |
13 | __do_privact: |
14 | mov TLB_SFSR, %g3 |
15 | stxa %g0, [%g3] ASI_DMMU ! Clear FaultValid bit |
16 | membar #Sync |
17 | sethi %hi(109f), %g7 |
18 | ba,pt %xcc, etrap |
19 | 109: or %g7, %lo(109b), %g7 |
20 | call do_privact |
21 | add %sp, PTREGS_OFF, %o0 |
22 | ba,a,pt %xcc, rtrap |
23 | .size __do_privact,.-__do_privact |
24 | |
25 | .type do_mna,#function |
26 | do_mna: |
27 | rdpr %tl, %g3 |
28 | cmp %g3, 1 |
29 | |
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 |
41 | |
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,a,pt %xcc, rtrap |
50 | .size do_mna,.-do_mna |
51 | |
52 | .type do_lddfmna,#function |
53 | do_lddfmna: |
54 | sethi %hi(109f), %g7 |
55 | mov TLB_SFSR, %g4 |
56 | ldxa [%g4] ASI_DMMU, %g5 |
57 | stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit |
58 | membar #Sync |
59 | mov DMMU_SFAR, %g4 |
60 | ldxa [%g4] ASI_DMMU, %g4 |
61 | ba,pt %xcc, etrap |
62 | 109: or %g7, %lo(109b), %g7 |
63 | mov %l4, %o1 |
64 | mov %l5, %o2 |
65 | call handle_lddfmna |
66 | add %sp, PTREGS_OFF, %o0 |
67 | ba,a,pt %xcc, rtrap |
68 | .size do_lddfmna,.-do_lddfmna |
69 | |
70 | .type do_stdfmna,#function |
71 | do_stdfmna: |
72 | sethi %hi(109f), %g7 |
73 | mov TLB_SFSR, %g4 |
74 | ldxa [%g4] ASI_DMMU, %g5 |
75 | stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit |
76 | membar #Sync |
77 | mov DMMU_SFAR, %g4 |
78 | ldxa [%g4] ASI_DMMU, %g4 |
79 | ba,pt %xcc, etrap |
80 | 109: or %g7, %lo(109b), %g7 |
81 | mov %l4, %o1 |
82 | mov %l5, %o2 |
83 | call handle_stdfmna |
84 | add %sp, PTREGS_OFF, %o0 |
85 | ba,a,pt %xcc, rtrap |
86 | nop |
87 | .size do_stdfmna,.-do_stdfmna |
88 | |
89 | .type breakpoint_trap,#function |
90 | breakpoint_trap: |
91 | call sparc_breakpoint |
92 | add %sp, PTREGS_OFF, %o0 |
93 | ba,pt %xcc, rtrap |
94 | nop |
95 | .size breakpoint_trap,.-breakpoint_trap |
96 | |