xref: /linux/arch/sparc/kernel/misctrap.S (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1#ifdef CONFIG_KGDB
2	.globl		arch_kgdb_breakpoint
3	.type		arch_kgdb_breakpoint,#function
4arch_kgdb_breakpoint:
5	ta		0x72
6	retl
7	 nop
8	.size		arch_kgdb_breakpoint,.-arch_kgdb_breakpoint
9#endif
10
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
18109:	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
24
25	.type		do_mna,#function
26do_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
421:	sethi		%hi(109f), %g7
43	ba,pt		%xcc, etrap
44109:	 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
52
53	.type		do_lddfmna,#function
54do_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
63109:	 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
71
72	.type		do_stdfmna,#function
73do_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
82109:	 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
90
91	.type		breakpoint_trap,#function
92breakpoint_trap:
93	call		sparc_breakpoint
94	 add		%sp, PTREGS_OFF, %o0
95	ba,pt		%xcc, rtrap
96	 nop
97	.size		breakpoint_trap,.-breakpoint_trap
98