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