xref: /netbsd-src/sys/arch/sparc64/sparc64/db_tlb_access.S (revision c46608621040cd74bdbf5061122f9c68800c9971)
1/*	$NetBSD: db_tlb_access.S,v 1.3 2015/03/02 14:17:06 nakayama Exp $	*/
2
3/*
4 * Copyright (c) 1996-2002 Eduardo Horvath
5 * Copyright (c) 2010 Matthew R. Green
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR  ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR  BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 */
27
28#include <machine/ctlreg.h>
29#include <machine/asm.h>
30
31/*
32 * Basic routines to print the I/D-TLB tag & data info.
33 */
34
35#ifdef _LP64
36ENTRY_NOPROFILE(print_dtlb)
37	save	%sp, -CC64FSZ, %sp
38	sll	%i0, 3, %l3
39	or	%l3, %i1, %l3
40	mov	%i1, %l1
41	clr	%l2
421:
43	ldxa	[%l1] ASI_DMMU_TLB_TAG, %o2
44	membar	#Sync
45	mov	%l2, %o1
46	ldxa	[%l1] ASI_DMMU_TLB_DATA, %o3
47	membar	#Sync
48	inc	%l2
49	set	2f, %o0
50	call	_C_LABEL(db_printf)
51	 inc	8, %l1
52
53	ldxa	[%l1] ASI_DMMU_TLB_TAG, %o2
54	membar	#Sync
55	mov	%l2, %o1
56	ldxa	[%l1] ASI_DMMU_TLB_DATA, %o3
57	membar	#Sync
58	inc	%l2
59	set	3f, %o0
60	call	_C_LABEL(db_printf)
61	 inc	8, %l1
62
63	cmp	%l1, %l3
64	bl	1b
65	 inc	8, %l0
66
67	ret
68	 restore
69
70ENTRY_NOPROFILE(print_itlb)
71	save	%sp, -CC64FSZ, %sp
72	sll	%i0, 3, %l3
73	or	%l3, %i1, %l3
74	mov	%i1, %l1
75	clr	%l2
761:
77	ldxa	[%l1] ASI_IMMU_TLB_TAG, %o2
78	membar	#Sync
79	mov	%l2, %o1
80	ldxa	[%l1] ASI_IMMU_TLB_DATA, %o3
81	membar	#Sync
82	inc	%l2
83	set	2f, %o0
84	call	_C_LABEL(db_printf)
85	 inc	8, %l1
86
87	ldxa	[%l1] ASI_IMMU_TLB_TAG, %o2
88	membar	#Sync
89	mov	%l2, %o1
90	ldxa	[%l1] ASI_IMMU_TLB_DATA, %o3
91	membar	#Sync
92	inc	%l2
93	set	3f, %o0
94	call	_C_LABEL(db_printf)
95	 inc	8, %l1
96
97	cmp	%l1, %l3
98	bl	1b
99	 inc	8, %l0
100
101	ret
102	 restore
103
104	.data
1052:
106	.asciz	"%2d:%016lx %016lx "
1073:
108	.asciz	"%2d:%016lx %016lx\n"
109	.text
110#else
111ENTRY_NOPROFILE(print_dtlb)
112	save	%sp, -CC64FSZ, %sp
113	sll	%i0, 3, %l3
114	or	%l3, %i1, %l3
115	mov	%i1, %l1
116	clr	%l2
1171:
118	ldxa	[%l1] ASI_DMMU_TLB_TAG, %o2
119	membar	#Sync
120	srl	%o2, 0, %o3
121	mov	%l2, %o1
122	srax	%o2, 32, %o2
123	ldxa	[%l1] ASI_DMMU_TLB_DATA, %o4
124	membar	#Sync
125	srl	%o4, 0, %o5
126	inc	%l2
127	srax	%o4, 32, %o4
128	set	2f, %o0
129	call	_C_LABEL(db_printf)
130	 inc	8, %l1
131
132	ldxa	[%l1] ASI_DMMU_TLB_TAG, %o2
133	membar	#Sync
134	srl	%o2, 0, %o3
135	mov	%l2, %o1
136	srax	%o2, 32, %o2
137	ldxa	[%l1] ASI_DMMU_TLB_DATA, %o4
138	membar	#Sync
139	srl	%o4, 0, %o5
140	inc	%l2
141	srax	%o4, 32, %o4
142	set	3f, %o0
143	call	_C_LABEL(db_printf)
144	 inc	8, %l1
145
146	cmp	%l1, %l3
147	bl	1b
148	 inc	8, %l0
149
150	ret
151	 restore
152
153ENTRY_NOPROFILE(print_itlb)
154	save	%sp, -CC64FSZ, %sp
155	sll	%i0, 3, %l3
156	or	%l3, %i1, %l3
157	mov	%i1, %l1
158	clr	%l2
1591:
160	ldxa	[%l1] ASI_IMMU_TLB_TAG, %o2
161	membar	#Sync
162	srl	%o2, 0, %o3
163	mov	%l2, %o1
164	srax	%o2, 32, %o2
165	ldxa	[%l1] ASI_IMMU_TLB_DATA, %o4
166	membar	#Sync
167	srl	%o4, 0, %o5
168	inc	%l2
169	srax	%o4, 32, %o4
170	set	2f, %o0
171	call	_C_LABEL(db_printf)
172	 inc	8, %l1
173
174	ldxa	[%l1] ASI_IMMU_TLB_TAG, %o2
175	membar	#Sync
176	srl	%o2, 0, %o3
177	mov	%l2, %o1
178	srax	%o2, 32, %o2
179	ldxa	[%l1] ASI_IMMU_TLB_DATA, %o4
180	membar	#Sync
181	srl	%o4, 0, %o5
182	inc	%l2
183	srax	%o4, 32, %o4
184	set	3f, %o0
185	call	_C_LABEL(db_printf)
186	 inc	8, %l1
187
188	cmp	%l1, %l3
189	bl	1b
190	 inc	8, %l0
191
192	ret
193	 restore
194
195	.data
1962:
197	.asciz	"%2d:%08x:%08x %08x:%08x "
1983:
199	.asciz	"%2d:%08x:%08x %08x:%08x\n"
200	.text
201#endif
202