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