xref: /illumos-gate/usr/src/uts/common/io/nxge/nxge_hcall.S (revision 5d9d9091f564c198a760790b0bfa72c44e17912b)
1*5d9d9091SRichard Lowe/*
2*5d9d9091SRichard Lowe * CDDL HEADER START
3*5d9d9091SRichard Lowe *
4*5d9d9091SRichard Lowe * The contents of this file are subject to the terms of the
5*5d9d9091SRichard Lowe * Common Development and Distribution License (the "License").
6*5d9d9091SRichard Lowe * You may not use this file except in compliance with the License.
7*5d9d9091SRichard Lowe *
8*5d9d9091SRichard Lowe * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*5d9d9091SRichard Lowe * or http://www.opensolaris.org/os/licensing.
10*5d9d9091SRichard Lowe * See the License for the specific language governing permissions
11*5d9d9091SRichard Lowe * and limitations under the License.
12*5d9d9091SRichard Lowe *
13*5d9d9091SRichard Lowe * When distributing Covered Code, include this CDDL HEADER in each
14*5d9d9091SRichard Lowe * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*5d9d9091SRichard Lowe * If applicable, add the following below this CDDL HEADER, with the
16*5d9d9091SRichard Lowe * fields enclosed by brackets "[]" replaced with your own identifying
17*5d9d9091SRichard Lowe * information: Portions Copyright [yyyy] [name of copyright owner]
18*5d9d9091SRichard Lowe *
19*5d9d9091SRichard Lowe * CDDL HEADER END
20*5d9d9091SRichard Lowe */
21*5d9d9091SRichard Lowe
22*5d9d9091SRichard Lowe/*
23*5d9d9091SRichard Lowe * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24*5d9d9091SRichard Lowe * Use is subject to license terms.
25*5d9d9091SRichard Lowe */
26*5d9d9091SRichard Lowe
27*5d9d9091SRichard Lowe/*
28*5d9d9091SRichard Lowe * Hypervisor calls called by niu leaf driver.
29*5d9d9091SRichard Lowe */
30*5d9d9091SRichard Lowe
31*5d9d9091SRichard Lowe#include <sys/asm_linkage.h>
32*5d9d9091SRichard Lowe#include <sys/hypervisor_api.h>
33*5d9d9091SRichard Lowe#include <sys/nxge/nxge_impl.h>
34*5d9d9091SRichard Lowe
35*5d9d9091SRichard Lowe#if defined(sun4v)
36*5d9d9091SRichard Lowe
37*5d9d9091SRichard Lowe/*
38*5d9d9091SRichard Lowe * NIU HV API v1.0 definitions
39*5d9d9091SRichard Lowe */
40*5d9d9091SRichard Lowe#define	N2NIU_RX_LP_SET		0x142
41*5d9d9091SRichard Lowe#define	N2NIU_RX_LP_GET		0x143
42*5d9d9091SRichard Lowe#define	N2NIU_TX_LP_SET		0x144
43*5d9d9091SRichard Lowe#define	N2NIU_TX_LP_GET		0x145
44*5d9d9091SRichard Lowe
45*5d9d9091SRichard Lowe/*
46*5d9d9091SRichard Lowe * NIU HV API v1.1 definitions
47*5d9d9091SRichard Lowe */
48*5d9d9091SRichard Lowe#define	N2NIU_VR_ASSIGN		0x146
49*5d9d9091SRichard Lowe#define	N2NIU_VR_UNASSIGN	0x147
50*5d9d9091SRichard Lowe#define	N2NIU_VR_GETINFO	0x148
51*5d9d9091SRichard Lowe
52*5d9d9091SRichard Lowe#define	N2NIU_VR_RX_DMA_ASSIGN		0x149
53*5d9d9091SRichard Lowe#define	N2NIU_VR_RX_DMA_UNASSIGN	0x14a
54*5d9d9091SRichard Lowe#define	N2NIU_VR_TX_DMA_ASSIGN		0x14b
55*5d9d9091SRichard Lowe#define	N2NIU_VR_TX_DMA_UNASSIGN	0x14c
56*5d9d9091SRichard Lowe
57*5d9d9091SRichard Lowe#define	N2NIU_VR_GET_RX_MAP	0x14d
58*5d9d9091SRichard Lowe#define	N2NIU_VR_GET_TX_MAP	0x14e
59*5d9d9091SRichard Lowe
60*5d9d9091SRichard Lowe#define	N2NIU_VRRX_SET_INO	0x150
61*5d9d9091SRichard Lowe#define	N2NIU_VRTX_SET_INO	0x151
62*5d9d9091SRichard Lowe
63*5d9d9091SRichard Lowe#define	N2NIU_VRRX_GET_INFO	0x152
64*5d9d9091SRichard Lowe#define	N2NIU_VRTX_GET_INFO	0x153
65*5d9d9091SRichard Lowe
66*5d9d9091SRichard Lowe#define	N2NIU_VRRX_LP_SET	0x154
67*5d9d9091SRichard Lowe#define	N2NIU_VRRX_LP_GET	0x155
68*5d9d9091SRichard Lowe#define	N2NIU_VRTX_LP_SET	0x156
69*5d9d9091SRichard Lowe#define	N2NIU_VRTX_LP_GET	0x157
70*5d9d9091SRichard Lowe
71*5d9d9091SRichard Lowe#define	N2NIU_VRRX_PARAM_GET	0x158
72*5d9d9091SRichard Lowe#define	N2NIU_VRRX_PARAM_SET	0x159
73*5d9d9091SRichard Lowe
74*5d9d9091SRichard Lowe#define	N2NIU_VRTX_PARAM_GET	0x15a
75*5d9d9091SRichard Lowe#define	N2NIU_VRTX_PARAM_SET	0x15b
76*5d9d9091SRichard Lowe
77*5d9d9091SRichard Lowe/*
78*5d9d9091SRichard Lowe * The new set of HV APIs to provide the ability
79*5d9d9091SRichard Lowe * of a domain to manage multiple NIU resources at once to
80*5d9d9091SRichard Lowe * support the KT familty chip having up to 4 NIUs
81*5d9d9091SRichard Lowe * per system. The trap # will be the same as those defined
82*5d9d9091SRichard Lowe * before 2.0
83*5d9d9091SRichard Lowe */
84*5d9d9091SRichard Lowe#define	N2NIU_CFGH_RX_LP_SET	0x142
85*5d9d9091SRichard Lowe#define	N2NIU_CFGH_TX_LP_SET	0x143
86*5d9d9091SRichard Lowe#define	N2NIU_CFGH_RX_LP_GET	0x144
87*5d9d9091SRichard Lowe#define	N2NIU_CFGH_TX_LP_GET	0x145
88*5d9d9091SRichard Lowe#define	N2NIU_CFGH_VR_ASSIGN	0x146
89*5d9d9091SRichard Lowe
90*5d9d9091SRichard Lowe	/*
91*5d9d9091SRichard Lowe	 * hv_niu_rx_logical_page_conf(uint64_t chidx, uint64_t pgidx,
92*5d9d9091SRichard Lowe	 *	uint64_t raddr, uint64_t size)
93*5d9d9091SRichard Lowe	 */
94*5d9d9091SRichard Lowe	ENTRY(hv_niu_rx_logical_page_conf)
95*5d9d9091SRichard Lowe	mov	N2NIU_RX_LP_CONF, %o5
96*5d9d9091SRichard Lowe	ta	FAST_TRAP
97*5d9d9091SRichard Lowe	retl
98*5d9d9091SRichard Lowe	nop
99*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_rx_logical_page_conf)
100*5d9d9091SRichard Lowe
101*5d9d9091SRichard Lowe	/*
102*5d9d9091SRichard Lowe	 * hv_niu_rx_logical_page_info(uint64_t chidx, uint64_t pgidx,
103*5d9d9091SRichard Lowe	 *	uint64_t *raddr, uint64_t *size)
104*5d9d9091SRichard Lowe	 */
105*5d9d9091SRichard Lowe	ENTRY(hv_niu_rx_logical_page_info)
106*5d9d9091SRichard Lowe	mov	%o2, %g1
107*5d9d9091SRichard Lowe	mov	%o3, %g2
108*5d9d9091SRichard Lowe	mov	N2NIU_RX_LP_INFO, %o5
109*5d9d9091SRichard Lowe	ta	FAST_TRAP
110*5d9d9091SRichard Lowe	stx	%o1, [%g1]
111*5d9d9091SRichard Lowe	retl
112*5d9d9091SRichard Lowe	stx	%o2, [%g2]
113*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_rx_logical_page_info)
114*5d9d9091SRichard Lowe
115*5d9d9091SRichard Lowe	/*
116*5d9d9091SRichard Lowe	 * hv_niu_tx_logical_page_conf(uint64_t chidx, uint64_t pgidx,
117*5d9d9091SRichard Lowe	 *	uint64_t raddr, uint64_t size)
118*5d9d9091SRichard Lowe	 */
119*5d9d9091SRichard Lowe	ENTRY(hv_niu_tx_logical_page_conf)
120*5d9d9091SRichard Lowe	mov	N2NIU_TX_LP_CONF, %o5
121*5d9d9091SRichard Lowe	ta	FAST_TRAP
122*5d9d9091SRichard Lowe	retl
123*5d9d9091SRichard Lowe	nop
124*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_tx_logical_page_conf)
125*5d9d9091SRichard Lowe
126*5d9d9091SRichard Lowe	/*
127*5d9d9091SRichard Lowe	 * hv_niu_tx_logical_page_info(uint64_t chidx, uint64_t pgidx,
128*5d9d9091SRichard Lowe	 *	uint64_t *raddr, uint64_t *size)
129*5d9d9091SRichard Lowe	 */
130*5d9d9091SRichard Lowe	ENTRY(hv_niu_tx_logical_page_info)
131*5d9d9091SRichard Lowe	mov	%o2, %g1
132*5d9d9091SRichard Lowe	mov	%o3, %g2
133*5d9d9091SRichard Lowe	mov	N2NIU_TX_LP_INFO, %o5
134*5d9d9091SRichard Lowe	ta	FAST_TRAP
135*5d9d9091SRichard Lowe	stx	%o1, [%g1]
136*5d9d9091SRichard Lowe	retl
137*5d9d9091SRichard Lowe	stx	%o2, [%g2]
138*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_tx_logical_page_info)
139*5d9d9091SRichard Lowe
140*5d9d9091SRichard Lowe	/*
141*5d9d9091SRichard Lowe	 * hv_niu_vr_assign(uint64_t vridx, uint64_t ldc_id,
142*5d9d9091SRichard Lowe	 *	uint32_t *cookie)
143*5d9d9091SRichard Lowe	 */
144*5d9d9091SRichard Lowe	ENTRY(hv_niu_vr_assign)
145*5d9d9091SRichard Lowe	mov	%o2, %g1
146*5d9d9091SRichard Lowe	mov	N2NIU_VR_ASSIGN, %o5
147*5d9d9091SRichard Lowe	ta	FAST_TRAP
148*5d9d9091SRichard Lowe	retl
149*5d9d9091SRichard Lowe	stw	%o1, [%g1]
150*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vr_assign)
151*5d9d9091SRichard Lowe
152*5d9d9091SRichard Lowe	/*
153*5d9d9091SRichard Lowe	 * hv_niu_vr_unassign(uint32_t cookie)
154*5d9d9091SRichard Lowe	 */
155*5d9d9091SRichard Lowe	ENTRY(hv_niu_vr_unassign)
156*5d9d9091SRichard Lowe	mov	N2NIU_VR_UNASSIGN, %o5
157*5d9d9091SRichard Lowe	ta	FAST_TRAP
158*5d9d9091SRichard Lowe	retl
159*5d9d9091SRichard Lowe	nop
160*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vr_unassign)
161*5d9d9091SRichard Lowe
162*5d9d9091SRichard Lowe	/*
163*5d9d9091SRichard Lowe	 * hv_niu_vr_getinfo(uint32_t cookie, uint64_t &real_start,
164*5d9d9091SRichard Lowe	 *	uint64_t &size)
165*5d9d9091SRichard Lowe	 */
166*5d9d9091SRichard Lowe	ENTRY(hv_niu_vr_getinfo)
167*5d9d9091SRichard Lowe	mov	%o1, %g1
168*5d9d9091SRichard Lowe	mov	%o2, %g2
169*5d9d9091SRichard Lowe	mov	N2NIU_VR_GETINFO, %o5
170*5d9d9091SRichard Lowe	ta	FAST_TRAP
171*5d9d9091SRichard Lowe	stx	%o1, [%g1]
172*5d9d9091SRichard Lowe	retl
173*5d9d9091SRichard Lowe	stx	%o2, [%g2]
174*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vr_getinfo)
175*5d9d9091SRichard Lowe
176*5d9d9091SRichard Lowe	/*
177*5d9d9091SRichard Lowe	 * hv_niu_vr_get_rxmap(uint32_t cookie, uint64_t *dma_map)
178*5d9d9091SRichard Lowe	 */
179*5d9d9091SRichard Lowe	ENTRY(hv_niu_vr_get_rxmap)
180*5d9d9091SRichard Lowe	mov	%o1, %g1
181*5d9d9091SRichard Lowe	mov	N2NIU_VR_GET_RX_MAP, %o5
182*5d9d9091SRichard Lowe	ta	FAST_TRAP
183*5d9d9091SRichard Lowe	retl
184*5d9d9091SRichard Lowe	stx	%o1, [%g1]
185*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vr_get_rxmap)
186*5d9d9091SRichard Lowe
187*5d9d9091SRichard Lowe	/*
188*5d9d9091SRichard Lowe	 * hv_niu_vr_get_txmap(uint32_t cookie, uint64_t *dma_map)
189*5d9d9091SRichard Lowe	 */
190*5d9d9091SRichard Lowe	ENTRY(hv_niu_vr_get_txmap)
191*5d9d9091SRichard Lowe	mov	%o1, %g1
192*5d9d9091SRichard Lowe	mov	N2NIU_VR_GET_TX_MAP, %o5
193*5d9d9091SRichard Lowe	ta	FAST_TRAP
194*5d9d9091SRichard Lowe	retl
195*5d9d9091SRichard Lowe	stx	%o1, [%g1]
196*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vr_get_txmap)
197*5d9d9091SRichard Lowe
198*5d9d9091SRichard Lowe	/*
199*5d9d9091SRichard Lowe	 * hv_niu_rx_dma_assign(uint32_t cookie, uint64_t chidx,
200*5d9d9091SRichard Lowe	 *	uint64_t *vchidx)
201*5d9d9091SRichard Lowe	 */
202*5d9d9091SRichard Lowe	ENTRY(hv_niu_rx_dma_assign)
203*5d9d9091SRichard Lowe	mov	%o2, %g1
204*5d9d9091SRichard Lowe	mov	N2NIU_VR_RX_DMA_ASSIGN, %o5
205*5d9d9091SRichard Lowe	ta	FAST_TRAP
206*5d9d9091SRichard Lowe	retl
207*5d9d9091SRichard Lowe	stx	%o1, [%g1]
208*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_rx_dma_assign)
209*5d9d9091SRichard Lowe
210*5d9d9091SRichard Lowe	/*
211*5d9d9091SRichard Lowe	 * hv_niu_rx_dma_unassign(uint32_t cookie, uint64_t vchidx)
212*5d9d9091SRichard Lowe	 */
213*5d9d9091SRichard Lowe	ENTRY(hv_niu_rx_dma_unassign)
214*5d9d9091SRichard Lowe	mov	N2NIU_VR_RX_DMA_UNASSIGN, %o5
215*5d9d9091SRichard Lowe	ta	FAST_TRAP
216*5d9d9091SRichard Lowe	retl
217*5d9d9091SRichard Lowe	nop
218*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_rx_dma_unassign)
219*5d9d9091SRichard Lowe
220*5d9d9091SRichard Lowe	/*
221*5d9d9091SRichard Lowe	 * hv_niu_tx_dma_assign(uint32_t cookie, uint64_t chidx,
222*5d9d9091SRichard Lowe	 *	uint64_t *vchidx)
223*5d9d9091SRichard Lowe	 */
224*5d9d9091SRichard Lowe	ENTRY(hv_niu_tx_dma_assign)
225*5d9d9091SRichard Lowe	mov	%o2, %g1
226*5d9d9091SRichard Lowe	mov	N2NIU_VR_TX_DMA_ASSIGN, %o5
227*5d9d9091SRichard Lowe	ta	FAST_TRAP
228*5d9d9091SRichard Lowe	retl
229*5d9d9091SRichard Lowe	stx	%o1, [%g1]
230*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_tx_dma_assign)
231*5d9d9091SRichard Lowe
232*5d9d9091SRichard Lowe	/*
233*5d9d9091SRichard Lowe	 * hv_niu_tx_dma_unassign(uint32_t cookie, uint64_t vchidx)
234*5d9d9091SRichard Lowe	 */
235*5d9d9091SRichard Lowe	ENTRY(hv_niu_tx_dma_unassign)
236*5d9d9091SRichard Lowe	mov	N2NIU_VR_TX_DMA_UNASSIGN, %o5
237*5d9d9091SRichard Lowe	ta	FAST_TRAP
238*5d9d9091SRichard Lowe	retl
239*5d9d9091SRichard Lowe	nop
240*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_tx_dma_unassign)
241*5d9d9091SRichard Lowe
242*5d9d9091SRichard Lowe	/*
243*5d9d9091SRichard Lowe	 * hv_niu_vrrx_logical_page_conf(uint32_t cookie, uint64_t chidx,
244*5d9d9091SRichard Lowe	 *	uint64_t pgidx, uint64_t raddr, uint64_t size)
245*5d9d9091SRichard Lowe	 */
246*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrrx_logical_page_conf)
247*5d9d9091SRichard Lowe	mov	N2NIU_VRRX_LP_SET, %o5
248*5d9d9091SRichard Lowe	ta	FAST_TRAP
249*5d9d9091SRichard Lowe	retl
250*5d9d9091SRichard Lowe	nop
251*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrrx_logical_page_conf)
252*5d9d9091SRichard Lowe
253*5d9d9091SRichard Lowe	/*
254*5d9d9091SRichard Lowe	 * hv_niu_vrrx_logical_page_info(uint32_t cookie, uint64_t chidx,
255*5d9d9091SRichard Lowe	 *	uint64_t pgidx, uint64_t *raddr, uint64_t *size)
256*5d9d9091SRichard Lowe	 */
257*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrrx_logical_page_info)
258*5d9d9091SRichard Lowe	mov	%o3, %g1
259*5d9d9091SRichard Lowe	mov	%o4, %g2
260*5d9d9091SRichard Lowe	mov	N2NIU_VRRX_LP_GET, %o5
261*5d9d9091SRichard Lowe	ta	FAST_TRAP
262*5d9d9091SRichard Lowe	stx	%o1, [%g1]
263*5d9d9091SRichard Lowe	retl
264*5d9d9091SRichard Lowe	stx	%o2, [%g2]
265*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrrx_logical_page_info)
266*5d9d9091SRichard Lowe
267*5d9d9091SRichard Lowe	/*
268*5d9d9091SRichard Lowe	 * hv_niu_vrtx_logical_page_conf(uint32_t cookie, uint64_t chidx,
269*5d9d9091SRichard Lowe	 *	uint64_t pgidx, uint64_t raddr, uint64_t size)
270*5d9d9091SRichard Lowe	 */
271*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrtx_logical_page_conf)
272*5d9d9091SRichard Lowe	mov	N2NIU_VRTX_LP_SET, %o5
273*5d9d9091SRichard Lowe	ta	FAST_TRAP
274*5d9d9091SRichard Lowe	retl
275*5d9d9091SRichard Lowe	nop
276*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrtx_logical_page_conf)
277*5d9d9091SRichard Lowe
278*5d9d9091SRichard Lowe	/*
279*5d9d9091SRichard Lowe	 * hv_niu_vrtx_logical_page_info(uint32_t cookie, uint64_t chidx,
280*5d9d9091SRichard Lowe	 *	uint64_t pgidx, uint64_t *raddr, uint64_t *size)
281*5d9d9091SRichard Lowe	 */
282*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrtx_logical_page_info)
283*5d9d9091SRichard Lowe	mov	%o3, %g1
284*5d9d9091SRichard Lowe	mov	%o4, %g2
285*5d9d9091SRichard Lowe	mov	N2NIU_VRTX_LP_GET, %o5
286*5d9d9091SRichard Lowe	ta	FAST_TRAP
287*5d9d9091SRichard Lowe	stx	%o1, [%g1]
288*5d9d9091SRichard Lowe	retl
289*5d9d9091SRichard Lowe	stx	%o2, [%g2]
290*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrtx_logical_page_info)
291*5d9d9091SRichard Lowe
292*5d9d9091SRichard Lowe	/*
293*5d9d9091SRichard Lowe	 * hv_niu_vrrx_getinfo(uint32_t cookie, uint64_t vridx,
294*5d9d9091SRichard Lowe	 *	uint64_t *group, uint64_t *logdev)
295*5d9d9091SRichard Lowe	 */
296*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrrx_getinfo)
297*5d9d9091SRichard Lowe	mov	%o2, %g1
298*5d9d9091SRichard Lowe	mov	%o3, %g2
299*5d9d9091SRichard Lowe	mov	N2NIU_VRRX_GET_INFO, %o5
300*5d9d9091SRichard Lowe	ta	FAST_TRAP
301*5d9d9091SRichard Lowe	stx	%o2, [%g2]
302*5d9d9091SRichard Lowe	retl
303*5d9d9091SRichard Lowe	stx	%o1, [%g1]
304*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrrx_getinfo)
305*5d9d9091SRichard Lowe
306*5d9d9091SRichard Lowe	/*
307*5d9d9091SRichard Lowe	 * hv_niu_vrtx_getinfo(uint32_t cookie, uint64_t vridx,
308*5d9d9091SRichard Lowe	 *	uint64_t *group, uint64_t *logdev)
309*5d9d9091SRichard Lowe	 */
310*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrtx_getinfo)
311*5d9d9091SRichard Lowe	mov	%o2, %g1
312*5d9d9091SRichard Lowe	mov	%o3, %g2
313*5d9d9091SRichard Lowe	mov	N2NIU_VRTX_GET_INFO, %o5
314*5d9d9091SRichard Lowe	ta	FAST_TRAP
315*5d9d9091SRichard Lowe	stx	%o2, [%g2]
316*5d9d9091SRichard Lowe	retl
317*5d9d9091SRichard Lowe	stx	%o1, [%g1]
318*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrtx_getinfo)
319*5d9d9091SRichard Lowe
320*5d9d9091SRichard Lowe	/*
321*5d9d9091SRichard Lowe	 * hv_niu_vrrx_set_ino(uint32_t cookie, uint64_t vridx, uint32_t ino)
322*5d9d9091SRichard Lowe	 */
323*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrrx_set_ino)
324*5d9d9091SRichard Lowe	mov	N2NIU_VRRX_SET_INO, %o5
325*5d9d9091SRichard Lowe	ta	FAST_TRAP
326*5d9d9091SRichard Lowe	retl
327*5d9d9091SRichard Lowe	nop
328*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrrx_set_ino)
329*5d9d9091SRichard Lowe
330*5d9d9091SRichard Lowe	/*
331*5d9d9091SRichard Lowe	 * hv_niu_vrtx_set_ino(uint32_t cookie, uint64_t vridx, uint32_t ino)
332*5d9d9091SRichard Lowe	 */
333*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrtx_set_ino)
334*5d9d9091SRichard Lowe	mov	N2NIU_VRTX_SET_INO, %o5
335*5d9d9091SRichard Lowe	ta	FAST_TRAP
336*5d9d9091SRichard Lowe	retl
337*5d9d9091SRichard Lowe	nop
338*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrtx_set_ino)
339*5d9d9091SRichard Lowe
340*5d9d9091SRichard Lowe	/*
341*5d9d9091SRichard Lowe	 * hv_niu_vrrx_param_get(uint32_t cookie, uint64_t vridx,
342*5d9d9091SRichard Lowe	 *	uint64_t param, uint64_t *value)
343*5d9d9091SRichard Lowe	 *
344*5d9d9091SRichard Lowe	 */
345*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrrx_param_get)
346*5d9d9091SRichard Lowe	mov	%o3, %g1
347*5d9d9091SRichard Lowe	mov	N2NIU_VRRX_PARAM_GET, %o5
348*5d9d9091SRichard Lowe	ta	FAST_TRAP
349*5d9d9091SRichard Lowe	retl
350*5d9d9091SRichard Lowe	stx	%o1, [%g1]
351*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrrx_param_get)
352*5d9d9091SRichard Lowe
353*5d9d9091SRichard Lowe	/*
354*5d9d9091SRichard Lowe	 * hv_niu_vrrx_param_set(uint32_t cookie, uint64_t vridx,
355*5d9d9091SRichard Lowe	 *	uint64_t param, uint64_t value)
356*5d9d9091SRichard Lowe	 *
357*5d9d9091SRichard Lowe	 */
358*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrrx_param_set)
359*5d9d9091SRichard Lowe	mov	N2NIU_VRRX_PARAM_SET, %o5
360*5d9d9091SRichard Lowe	ta	FAST_TRAP
361*5d9d9091SRichard Lowe	retl
362*5d9d9091SRichard Lowe	nop
363*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrrx_param_set)
364*5d9d9091SRichard Lowe
365*5d9d9091SRichard Lowe	/*
366*5d9d9091SRichard Lowe	 * hv_niu_vrtx_param_get(uint32_t cookie, uint64_t vridx,
367*5d9d9091SRichard Lowe	 *	uint64_t param, uint64_t *value)
368*5d9d9091SRichard Lowe	 *
369*5d9d9091SRichard Lowe	 */
370*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrtx_param_get)
371*5d9d9091SRichard Lowe	mov	%o3, %g1
372*5d9d9091SRichard Lowe	mov	N2NIU_VRTX_PARAM_GET, %o5
373*5d9d9091SRichard Lowe	ta	FAST_TRAP
374*5d9d9091SRichard Lowe	retl
375*5d9d9091SRichard Lowe	stx	%o1, [%g1]
376*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrtx_param_get)
377*5d9d9091SRichard Lowe
378*5d9d9091SRichard Lowe	/*
379*5d9d9091SRichard Lowe	 * hv_niu_vrtx_param_set(uint32_t cookie, uint64_t vridx,
380*5d9d9091SRichard Lowe	 *	uint64_t param, uint64_t value)
381*5d9d9091SRichard Lowe	 *
382*5d9d9091SRichard Lowe	 */
383*5d9d9091SRichard Lowe	ENTRY(hv_niu_vrtx_param_set)
384*5d9d9091SRichard Lowe	mov	N2NIU_VRTX_PARAM_SET, %o5
385*5d9d9091SRichard Lowe	ta	FAST_TRAP
386*5d9d9091SRichard Lowe	retl
387*5d9d9091SRichard Lowe	nop
388*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_vrtx_param_set)
389*5d9d9091SRichard Lowe
390*5d9d9091SRichard Lowe	/*
391*5d9d9091SRichard Lowe	 * Interfaces functions which require the configuration handle.
392*5d9d9091SRichard Lowe	 */
393*5d9d9091SRichard Lowe	/*
394*5d9d9091SRichard Lowe	 * hv_niu__cfgh_rx_logical_page_conf(uint64_t cfgh, uint64_t chidx,
395*5d9d9091SRichard Lowe	 *    uint64_t pgidx, uint64_t raddr, uint64_t size)
396*5d9d9091SRichard Lowe	 */
397*5d9d9091SRichard Lowe	ENTRY(hv_niu_cfgh_rx_logical_page_conf)
398*5d9d9091SRichard Lowe	mov	N2NIU_RX_LP_CONF, %o5
399*5d9d9091SRichard Lowe	ta	FAST_TRAP
400*5d9d9091SRichard Lowe	retl
401*5d9d9091SRichard Lowe	nop
402*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_cfgh_rx_logical_page_conf)
403*5d9d9091SRichard Lowe
404*5d9d9091SRichard Lowe	/*
405*5d9d9091SRichard Lowe	 * hv_niu__cfgh_rx_logical_page_info(uint64_t cfgh, uint64_t chidx,
406*5d9d9091SRichard Lowe	 *    uint64_t pgidx, uint64_t *raddr, uint64_t *size)
407*5d9d9091SRichard Lowe	 */
408*5d9d9091SRichard Lowe	ENTRY(hv_niu_cfgh_rx_logical_page_info)
409*5d9d9091SRichard Lowe	mov	%o3, %g1
410*5d9d9091SRichard Lowe	mov	%o4, %g2
411*5d9d9091SRichard Lowe	mov	N2NIU_RX_LP_INFO, %o5
412*5d9d9091SRichard Lowe	ta	FAST_TRAP
413*5d9d9091SRichard Lowe	stx	%o1, [%g1]
414*5d9d9091SRichard Lowe	retl
415*5d9d9091SRichard Lowe	stx	%o2, [%g2]
416*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_cfgh_rx_logical_page_info)
417*5d9d9091SRichard Lowe
418*5d9d9091SRichard Lowe	/*
419*5d9d9091SRichard Lowe	 * hv_niu_cfgh_tx_logical_page_conf(uint64_t cfgh, uint64_t chidx,
420*5d9d9091SRichard Lowe	 *    uint64_t pgidx, uint64_t raddr, uint64_t size)
421*5d9d9091SRichard Lowe	 */
422*5d9d9091SRichard Lowe	ENTRY(hv_niu_cfgh_tx_logical_page_conf)
423*5d9d9091SRichard Lowe	mov	N2NIU_TX_LP_CONF, %o5
424*5d9d9091SRichard Lowe	ta	FAST_TRAP
425*5d9d9091SRichard Lowe	retl
426*5d9d9091SRichard Lowe	nop
427*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_cfgh_tx_logical_page_conf)
428*5d9d9091SRichard Lowe
429*5d9d9091SRichard Lowe	/*
430*5d9d9091SRichard Lowe	 * hv_niu_cfgh_tx_logical_page_info(uint64_t cfgh, uint64_t chidx,
431*5d9d9091SRichard Lowe	 *    uint64_t pgidx, uint64_t *raddr, uint64_t *size)
432*5d9d9091SRichard Lowe	 */
433*5d9d9091SRichard Lowe	ENTRY(hv_niu_cfgh_tx_logical_page_info)
434*5d9d9091SRichard Lowe	mov	%o3, %g1
435*5d9d9091SRichard Lowe	mov	%o4, %g2
436*5d9d9091SRichard Lowe	mov	N2NIU_TX_LP_INFO, %o5
437*5d9d9091SRichard Lowe	ta	FAST_TRAP
438*5d9d9091SRichard Lowe	stx	%o1, [%g1]
439*5d9d9091SRichard Lowe	retl
440*5d9d9091SRichard Lowe	stx	%o2, [%g2]
441*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_cfgh_tx_logical_page_info)
442*5d9d9091SRichard Lowe
443*5d9d9091SRichard Lowe	/*
444*5d9d9091SRichard Lowe	 * hv_niu_cfgh_vr_assign(uint64_t cfgh, uint64_t vridx, uint64_t ldc_id,
445*5d9d9091SRichard Lowe	 *     uint32_t *cookie)
446*5d9d9091SRichard Lowe	 */
447*5d9d9091SRichard Lowe	ENTRY(hv_niu_cfgh_vr_assign)
448*5d9d9091SRichard Lowe	mov	%o3, %g1
449*5d9d9091SRichard Lowe	mov	N2NIU_VR_ASSIGN, %o5
450*5d9d9091SRichard Lowe	ta	FAST_TRAP
451*5d9d9091SRichard Lowe	retl
452*5d9d9091SRichard Lowe	stw	%o1, [%g1]
453*5d9d9091SRichard Lowe	SET_SIZE(hv_niu_cfgh_vr_assign)
454*5d9d9091SRichard Lowe
455*5d9d9091SRichard Lowe#endif /*defined(sun4v)*/
456