xref: /titanic_50/usr/src/uts/common/io/nxge/nxge_hcall.s (revision 4df55fde49134f9735f84011f23a767c75e393c7)
16f45ec7bSml29623/*
26f45ec7bSml29623 * CDDL HEADER START
36f45ec7bSml29623 *
46f45ec7bSml29623 * The contents of this file are subject to the terms of the
56f45ec7bSml29623 * Common Development and Distribution License (the "License").
66f45ec7bSml29623 * You may not use this file except in compliance with the License.
76f45ec7bSml29623 *
86f45ec7bSml29623 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96f45ec7bSml29623 * or http://www.opensolaris.org/os/licensing.
106f45ec7bSml29623 * See the License for the specific language governing permissions
116f45ec7bSml29623 * and limitations under the License.
126f45ec7bSml29623 *
136f45ec7bSml29623 * When distributing Covered Code, include this CDDL HEADER in each
146f45ec7bSml29623 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
156f45ec7bSml29623 * If applicable, add the following below this CDDL HEADER, with the
166f45ec7bSml29623 * fields enclosed by brackets "[]" replaced with your own identifying
176f45ec7bSml29623 * information: Portions Copyright [yyyy] [name of copyright owner]
186f45ec7bSml29623 *
196f45ec7bSml29623 * CDDL HEADER END
206f45ec7bSml29623 */
21678453a8Sspeer
226f45ec7bSml29623/*
23*4df55fdeSJanie Lu * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
246f45ec7bSml29623 * Use is subject to license terms.
256f45ec7bSml29623 */
266f45ec7bSml29623
276f45ec7bSml29623/*
286f45ec7bSml29623 * Hypervisor calls called by niu leaf driver.
296f45ec7bSml29623 */
306f45ec7bSml29623
316f45ec7bSml29623#include <sys/asm_linkage.h>
326f45ec7bSml29623#include <sys/hypervisor_api.h>
336f45ec7bSml29623#include <sys/nxge/nxge_impl.h>
346f45ec7bSml29623
35da14cebeSEric Cheng#if defined(sun4v)
36da14cebeSEric Cheng
37678453a8Sspeer/*
38678453a8Sspeer * NIU HV API v1.0 definitions
39678453a8Sspeer */
40678453a8Sspeer#define	N2NIU_RX_LP_SET		0x142
41678453a8Sspeer#define	N2NIU_RX_LP_GET		0x143
42678453a8Sspeer#define	N2NIU_TX_LP_SET		0x144
43678453a8Sspeer#define	N2NIU_TX_LP_GET		0x145
44678453a8Sspeer
45678453a8Sspeer/*
46678453a8Sspeer * NIU HV API v1.1 definitions
47678453a8Sspeer */
48678453a8Sspeer#define	N2NIU_VR_ASSIGN		0x146
49678453a8Sspeer#define	N2NIU_VR_UNASSIGN	0x147
50678453a8Sspeer#define	N2NIU_VR_GETINFO	0x148
51678453a8Sspeer
52678453a8Sspeer#define	N2NIU_VR_RX_DMA_ASSIGN		0x149
53678453a8Sspeer#define	N2NIU_VR_RX_DMA_UNASSIGN	0x14a
54678453a8Sspeer#define	N2NIU_VR_TX_DMA_ASSIGN		0x14b
55678453a8Sspeer#define	N2NIU_VR_TX_DMA_UNASSIGN	0x14c
56678453a8Sspeer
57678453a8Sspeer#define	N2NIU_VR_GET_RX_MAP	0x14d
58678453a8Sspeer#define	N2NIU_VR_GET_TX_MAP	0x14e
59678453a8Sspeer
60678453a8Sspeer#define	N2NIU_VRRX_SET_INO	0x150
61678453a8Sspeer#define	N2NIU_VRTX_SET_INO	0x151
62678453a8Sspeer
63678453a8Sspeer#define	N2NIU_VRRX_GET_INFO	0x152
64678453a8Sspeer#define	N2NIU_VRTX_GET_INFO	0x153
65678453a8Sspeer
66678453a8Sspeer#define	N2NIU_VRRX_LP_SET	0x154
67678453a8Sspeer#define	N2NIU_VRRX_LP_GET	0x155
68678453a8Sspeer#define	N2NIU_VRTX_LP_SET	0x156
69678453a8Sspeer#define	N2NIU_VRTX_LP_GET	0x157
70678453a8Sspeer
71678453a8Sspeer#define	N2NIU_VRRX_PARAM_GET	0x158
72678453a8Sspeer#define	N2NIU_VRRX_PARAM_SET	0x159
73678453a8Sspeer
74678453a8Sspeer#define	N2NIU_VRTX_PARAM_GET	0x15a
75678453a8Sspeer#define	N2NIU_VRTX_PARAM_SET	0x15b
76678453a8Sspeer
77*4df55fdeSJanie Lu/*
78*4df55fdeSJanie Lu * The new set of HV APIs to provide the ability
79*4df55fdeSJanie Lu * of a domain to manage multiple NIU resources at once to
80*4df55fdeSJanie Lu * support the KT familty chip having up to 4 NIUs
81*4df55fdeSJanie Lu * per system. The trap # will be the same as those defined
82*4df55fdeSJanie Lu * before 2.0
83*4df55fdeSJanie Lu */
84*4df55fdeSJanie Lu#define	N2NIU_CFGH_RX_LP_SET	0x142
85*4df55fdeSJanie Lu#define	N2NIU_CFGH_TX_LP_SET	0x143
86*4df55fdeSJanie Lu#define	N2NIU_CFGH_RX_LP_GET	0x144
87*4df55fdeSJanie Lu#define	N2NIU_CFGH_TX_LP_GET	0x145
88*4df55fdeSJanie Lu#define	N2NIU_CFGH_VR_ASSIGN	0x146
89*4df55fdeSJanie Lu
906f45ec7bSml29623#if defined(lint) || defined(__lint)
916f45ec7bSml29623
926f45ec7bSml29623/*ARGSUSED*/
936f45ec7bSml29623uint64_t
946f45ec7bSml29623hv_niu_rx_logical_page_conf(uint64_t chidx, uint64_t pgidx,
956f45ec7bSml29623	uint64_t raddr, uint64_t size)
966f45ec7bSml29623{ return (0); }
976f45ec7bSml29623
986f45ec7bSml29623/*ARGSUSED*/
996f45ec7bSml29623uint64_t
1006f45ec7bSml29623hv_niu_rx_logical_page_info(uint64_t chidx, uint64_t pgidx,
1016f45ec7bSml29623	uint64_t *raddr, uint64_t *size)
1026f45ec7bSml29623{ return (0); }
1036f45ec7bSml29623
1046f45ec7bSml29623/*ARGSUSED*/
1056f45ec7bSml29623uint64_t
1066f45ec7bSml29623hv_niu_tx_logical_page_conf(uint64_t chidx, uint64_t pgidx,
1076f45ec7bSml29623	uint64_t raddr, uint64_t size)
1086f45ec7bSml29623{ return (0); }
1096f45ec7bSml29623
1106f45ec7bSml29623/*ARGSUSED*/
1116f45ec7bSml29623uint64_t
1126f45ec7bSml29623hv_niu_tx_logical_page_info(uint64_t chidx, uint64_t pgidx,
1136f45ec7bSml29623	uint64_t *raddr, uint64_t *size)
1146f45ec7bSml29623{ return (0); }
1156f45ec7bSml29623
116678453a8Sspeer/*ARGSUSED*/
117678453a8Sspeeruint64_t
118678453a8Sspeerhv_niu_vr_assign(uint64_t vridx, uint64_t ldc_id, uint32_t *cookie)
119678453a8Sspeer{ return (0); }
120678453a8Sspeer
121*4df55fdeSJanie Lu/*
122*4df55fdeSJanie Lu * KT: Interfaces functions which require the configuration handle
123*4df55fdeSJanie Lu */
124*4df55fdeSJanie Lu/*ARGSUSED*/
125*4df55fdeSJanie Luuint64_t
126*4df55fdeSJanie Luhv_niu_cfgh_rx_logical_page_conf(uint64_t cfgh, uint64_t chidx, uint64_t pgidx,
127*4df55fdeSJanie Lu	uint64_t raddr, uint64_t size)
128*4df55fdeSJanie Lu{ return (0); }
129*4df55fdeSJanie Lu
130*4df55fdeSJanie Lu/*ARGSUSED*/
131*4df55fdeSJanie Luuint64_t
132*4df55fdeSJanie Luhv_niu_cfgh_rx_logical_page_info(uint64_t cfgh, uint64_t chidx, uint64_t pgidx,
133*4df55fdeSJanie Lu	uint64_t *raddr, uint64_t *size)
134*4df55fdeSJanie Lu{ return (0); }
135*4df55fdeSJanie Lu
136*4df55fdeSJanie Lu/*ARGSUSED*/
137*4df55fdeSJanie Luuint64_t
138*4df55fdeSJanie Luhv_niu_cfgh_tx_logical_page_conf(uint64_t cfgh, uint64_t chidx, uint64_t pgidx,
139*4df55fdeSJanie Lu	uint64_t raddr, uint64_t size)
140*4df55fdeSJanie Lu{ return (0); }
141*4df55fdeSJanie Lu
142*4df55fdeSJanie Lu/*ARGSUSED*/
143*4df55fdeSJanie Luuint64_t
144*4df55fdeSJanie Luhv_niu_cfgh_tx_logical_page_info(uint64_t cfgh, uint64_t chidx, uint64_t pgidx,
145*4df55fdeSJanie Lu	uint64_t *raddr, uint64_t *size)
146*4df55fdeSJanie Lu{ return (0); }
147*4df55fdeSJanie Lu
148*4df55fdeSJanie Lu/*ARGSUSED*/
149*4df55fdeSJanie Luuint64_t
150*4df55fdeSJanie Luhv_niu_cfgh_vr_assign(uint64_t cfgh, uint64_t vridx, uint64_t ldc_id, uint32_t *cookie)
151*4df55fdeSJanie Lu{ return (0); }
152*4df55fdeSJanie Lu
153678453a8Sspeer/*ARGSUSED*/
154678453a8Sspeeruint64_t
155678453a8Sspeerhv_niu_vr_unassign(uint32_t cookie)
156678453a8Sspeer{ return (0); }
157678453a8Sspeer
158678453a8Sspeer/*ARGSUSED*/
159678453a8Sspeeruint64_t
160678453a8Sspeerhv_niu_vr_getinfo(uint32_t cookie, uint64_t *real_start, uint64_t *size)
161678453a8Sspeer{ return (0); }
162678453a8Sspeer
163678453a8Sspeer/*ARGSUSED*/
164678453a8Sspeeruint64_t
165678453a8Sspeerhv_niu_vr_get_rxmap(uint32_t cookie, uint64_t *dma_map)
166678453a8Sspeer{ return (0); }
167678453a8Sspeer
168678453a8Sspeer/*ARGSUSED*/
169678453a8Sspeeruint64_t
170678453a8Sspeerhv_niu_vr_get_txmap(uint32_t cookie, uint64_t *dma_map)
171678453a8Sspeer{ return (0); }
172678453a8Sspeer
173678453a8Sspeer/*ARGSUSED*/
174678453a8Sspeeruint64_t
175678453a8Sspeerhv_niu_rx_dma_assign(uint32_t cookie, uint64_t chidx, uint64_t *vchidx)
176678453a8Sspeer{ return (0); }
177678453a8Sspeer
178678453a8Sspeer/*ARGSUSED*/
179678453a8Sspeeruint64_t
180678453a8Sspeerhv_niu_rx_dma_unassign(uint32_t cookie, uint64_t vchidx)
181678453a8Sspeer{ return (0); }
182678453a8Sspeer
183678453a8Sspeer/*ARGSUSED*/
184678453a8Sspeeruint64_t
185678453a8Sspeerhv_niu_tx_dma_assign(uint32_t cookie, uint64_t chidx, uint64_t *vchidx)
186678453a8Sspeer{ return (0); }
187678453a8Sspeer
188678453a8Sspeer/*ARGSUSED*/
189678453a8Sspeeruint64_t
190678453a8Sspeerhv_niu_tx_dma_unassign(uint32_t cookie, uint64_t chidx)
191678453a8Sspeer{ return (0); }
192678453a8Sspeer
193678453a8Sspeer/*ARGSUSED*/
194678453a8Sspeeruint64_t
195678453a8Sspeerhv_niu_vrrx_logical_page_conf(uint32_t cookie, uint64_t chidx, uint64_t pgidx,
196678453a8Sspeer    uint64_t raddr, uint64_t size)
197678453a8Sspeer{ return (0); }
198678453a8Sspeer
199678453a8Sspeer/*ARGSUSED*/
200678453a8Sspeeruint64_t
201678453a8Sspeerhv_niu_vrrx_logical_page_info(uint32_t cookie, uint64_t chidx, uint64_t pgidx,
202678453a8Sspeer    uint64_t *raddr, uint64_t *size)
203678453a8Sspeer{ return (0); }
204678453a8Sspeer
205678453a8Sspeer/*ARGSUSED*/
206678453a8Sspeeruint64_t
207678453a8Sspeerhv_niu_vrtx_logical_page_conf(uint32_t cookie, uint64_t chidx, uint64_t pgidx,
208678453a8Sspeer    uint64_t raddr, uint64_t size)
209678453a8Sspeer{ return (0); }
210678453a8Sspeer
211678453a8Sspeer/*ARGSUSED*/
212678453a8Sspeeruint64_t
213678453a8Sspeerhv_niu_vrtx_logical_page_info(uint32_t cookie, uint64_t chidx, uint64_t pgidx,
214678453a8Sspeer    uint64_t *raddr, uint64_t *size)
215678453a8Sspeer{ return (0); }
216678453a8Sspeer
217678453a8Sspeer/*ARGSUSED*/
218678453a8Sspeeruint64_t
219678453a8Sspeerhv_niu_vrrx_param_get(uint32_t cookie, uint64_t vridx, uint64_t param,
220678453a8Sspeer	uint64_t *value)
221678453a8Sspeer{ return (0); }
222678453a8Sspeer
223678453a8Sspeer/*ARGSUSED*/
224678453a8Sspeeruint64_t
225678453a8Sspeerhv_niu_vrrx_param_set(uint32_t cookie, uint64_t vridx, uint64_t param,
226678453a8Sspeer	uint64_t value)
227678453a8Sspeer{ return (0); }
228678453a8Sspeer
229678453a8Sspeer/*ARGSUSED*/
230678453a8Sspeeruint64_t
231678453a8Sspeerhv_niu_vrtx_param_get(uint32_t cookie, uint64_t vridx, uint64_t param,
232678453a8Sspeer	uint64_t *value)
233678453a8Sspeer{ return (0); }
234678453a8Sspeer
235678453a8Sspeer/*ARGSUSED*/
236678453a8Sspeeruint64_t
237678453a8Sspeerhv_niu_vrtx_param_set(uint32_t cookie, uint64_t vridx, uint64_t param,
238678453a8Sspeer	uint64_t value)
239678453a8Sspeer{ return (0); }
240678453a8Sspeer
241678453a8Sspeer/*ARGSUSED*/
242678453a8Sspeeruint64_t
243678453a8Sspeerhv_niu_vrtx_getinfo(uint32_t cookie, uint64_t vridx,
244678453a8Sspeer	uint64_t *group, uint64_t *logdev)
245678453a8Sspeer{ return (0); }
246678453a8Sspeer
247678453a8Sspeer/*ARGSUSED*/
248678453a8Sspeeruint64_t
249678453a8Sspeerhv_niu_vrrx_getinfo(uint32_t cookie, uint64_t vridx,
250678453a8Sspeer		uint64_t *group, uint64_t *logdev)
251678453a8Sspeer{ return (0); }
252678453a8Sspeer
253678453a8Sspeer/*ARGSUSED*/
254678453a8Sspeeruint64_t
255678453a8Sspeerhv_niu_vrtx_set_ino(uint32_t cookie, uint64_t vridx, uint32_t ino)
256678453a8Sspeer{ return (0); }
257678453a8Sspeer
258678453a8Sspeer/*ARGSUSED*/
259678453a8Sspeeruint64_t
260678453a8Sspeerhv_niu_vrrx_set_ino(uint32_t cookie, uint64_t vridx, uint32_t ino)
261678453a8Sspeer{ return (0); }
262678453a8Sspeer
2636f45ec7bSml29623#else	/* lint || __lint */
2646f45ec7bSml29623
2656f45ec7bSml29623	/*
2666f45ec7bSml29623	 * hv_niu_rx_logical_page_conf(uint64_t chidx, uint64_t pgidx,
2676f45ec7bSml29623	 *	uint64_t raddr, uint64_t size)
2686f45ec7bSml29623	 */
2696f45ec7bSml29623	ENTRY(hv_niu_rx_logical_page_conf)
2706f45ec7bSml29623	mov	N2NIU_RX_LP_CONF, %o5
2716f45ec7bSml29623	ta	FAST_TRAP
2726f45ec7bSml29623	retl
2736f45ec7bSml29623	nop
2746f45ec7bSml29623	SET_SIZE(hv_niu_rx_logical_page_conf)
2756f45ec7bSml29623
2766f45ec7bSml29623	/*
2776f45ec7bSml29623	 * hv_niu_rx_logical_page_info(uint64_t chidx, uint64_t pgidx,
2786f45ec7bSml29623	 *	uint64_t *raddr, uint64_t *size)
2796f45ec7bSml29623	 */
2806f45ec7bSml29623	ENTRY(hv_niu_rx_logical_page_info)
2816f45ec7bSml29623	mov	%o2, %g1
2826f45ec7bSml29623	mov	%o3, %g2
2836f45ec7bSml29623	mov	N2NIU_RX_LP_INFO, %o5
2846f45ec7bSml29623	ta	FAST_TRAP
2856f45ec7bSml29623	stx	%o1, [%g1]
2866f45ec7bSml29623	retl
2876f45ec7bSml29623	stx	%o2, [%g2]
2886f45ec7bSml29623	SET_SIZE(hv_niu_rx_logical_page_info)
2896f45ec7bSml29623
2906f45ec7bSml29623	/*
2916f45ec7bSml29623	 * hv_niu_tx_logical_page_conf(uint64_t chidx, uint64_t pgidx,
2926f45ec7bSml29623	 *	uint64_t raddr, uint64_t size)
2936f45ec7bSml29623	 */
2946f45ec7bSml29623	ENTRY(hv_niu_tx_logical_page_conf)
2956f45ec7bSml29623	mov	N2NIU_TX_LP_CONF, %o5
2966f45ec7bSml29623	ta	FAST_TRAP
2976f45ec7bSml29623	retl
2986f45ec7bSml29623	nop
2996f45ec7bSml29623	SET_SIZE(hv_niu_tx_logical_page_conf)
3006f45ec7bSml29623
3016f45ec7bSml29623	/*
3026f45ec7bSml29623	 * hv_niu_tx_logical_page_info(uint64_t chidx, uint64_t pgidx,
3036f45ec7bSml29623	 *	uint64_t *raddr, uint64_t *size)
3046f45ec7bSml29623	 */
3056f45ec7bSml29623	ENTRY(hv_niu_tx_logical_page_info)
3066f45ec7bSml29623	mov	%o2, %g1
3076f45ec7bSml29623	mov	%o3, %g2
3086f45ec7bSml29623	mov	N2NIU_TX_LP_INFO, %o5
3096f45ec7bSml29623	ta	FAST_TRAP
3106f45ec7bSml29623	stx	%o1, [%g1]
3116f45ec7bSml29623	retl
3126f45ec7bSml29623	stx	%o2, [%g2]
3136f45ec7bSml29623	SET_SIZE(hv_niu_tx_logical_page_info)
3146f45ec7bSml29623
315678453a8Sspeer	/*
316678453a8Sspeer	 * hv_niu_vr_assign(uint64_t vridx, uint64_t ldc_id,
317678453a8Sspeer	 *	uint32_t *cookie)
318678453a8Sspeer	 */
319678453a8Sspeer	ENTRY(hv_niu_vr_assign)
320678453a8Sspeer	mov	%o2, %g1
321678453a8Sspeer	mov	N2NIU_VR_ASSIGN, %o5
322678453a8Sspeer	ta	FAST_TRAP
323678453a8Sspeer	retl
324678453a8Sspeer	stw	%o1, [%g1]
325678453a8Sspeer	SET_SIZE(hv_niu_vr_assign)
326678453a8Sspeer
327678453a8Sspeer	/*
328678453a8Sspeer	 * hv_niu_vr_unassign(uint32_t cookie)
329678453a8Sspeer	 */
330678453a8Sspeer	ENTRY(hv_niu_vr_unassign)
331678453a8Sspeer	mov	N2NIU_VR_UNASSIGN, %o5
332678453a8Sspeer	ta	FAST_TRAP
333678453a8Sspeer	retl
334678453a8Sspeer	nop
335678453a8Sspeer	SET_SIZE(hv_niu_vr_unassign)
336678453a8Sspeer
337678453a8Sspeer	/*
338678453a8Sspeer	 * hv_niu_vr_getinfo(uint32_t cookie, uint64_t &real_start,
339678453a8Sspeer	 *	uint64_t &size)
340678453a8Sspeer	 */
341678453a8Sspeer	ENTRY(hv_niu_vr_getinfo)
342678453a8Sspeer	mov	%o1, %g1
343678453a8Sspeer	mov	%o2, %g2
344678453a8Sspeer	mov	N2NIU_VR_GETINFO, %o5
345678453a8Sspeer	ta	FAST_TRAP
346678453a8Sspeer	stx	%o1, [%g1]
347678453a8Sspeer	retl
348678453a8Sspeer	stx	%o2, [%g2]
349678453a8Sspeer	SET_SIZE(hv_niu_vr_getinfo)
350678453a8Sspeer
351678453a8Sspeer	/*
352678453a8Sspeer	 * hv_niu_vr_get_rxmap(uint32_t cookie, uint64_t *dma_map)
353678453a8Sspeer	 */
354678453a8Sspeer	ENTRY(hv_niu_vr_get_rxmap)
355678453a8Sspeer	mov	%o1, %g1
356678453a8Sspeer	mov	N2NIU_VR_GET_RX_MAP, %o5
357678453a8Sspeer	ta	FAST_TRAP
358678453a8Sspeer	retl
359678453a8Sspeer	stx	%o1, [%g1]
360678453a8Sspeer	SET_SIZE(hv_niu_vr_get_rxmap)
361678453a8Sspeer
362678453a8Sspeer	/*
363678453a8Sspeer	 * hv_niu_vr_get_txmap(uint32_t cookie, uint64_t *dma_map)
364678453a8Sspeer	 */
365678453a8Sspeer	ENTRY(hv_niu_vr_get_txmap)
366678453a8Sspeer	mov	%o1, %g1
367678453a8Sspeer	mov	N2NIU_VR_GET_TX_MAP, %o5
368678453a8Sspeer	ta	FAST_TRAP
369678453a8Sspeer	retl
370678453a8Sspeer	stx	%o1, [%g1]
371678453a8Sspeer	SET_SIZE(hv_niu_vr_get_txmap)
372678453a8Sspeer
373678453a8Sspeer	/*
374678453a8Sspeer	 * hv_niu_rx_dma_assign(uint32_t cookie, uint64_t chidx,
375678453a8Sspeer	 *	uint64_t *vchidx)
376678453a8Sspeer	 */
377678453a8Sspeer	ENTRY(hv_niu_rx_dma_assign)
378678453a8Sspeer	mov	%o2, %g1
379678453a8Sspeer	mov	N2NIU_VR_RX_DMA_ASSIGN, %o5
380678453a8Sspeer	ta	FAST_TRAP
381678453a8Sspeer	retl
382678453a8Sspeer	stx	%o1, [%g1]
383678453a8Sspeer	SET_SIZE(hv_niu_rx_dma_assign)
384678453a8Sspeer
385678453a8Sspeer	/*
386678453a8Sspeer	 * hv_niu_rx_dma_unassign(uint32_t cookie, uint64_t vchidx)
387678453a8Sspeer	 */
388678453a8Sspeer	ENTRY(hv_niu_rx_dma_unassign)
389678453a8Sspeer	mov	N2NIU_VR_RX_DMA_UNASSIGN, %o5
390678453a8Sspeer	ta	FAST_TRAP
391678453a8Sspeer	retl
392678453a8Sspeer	nop
393678453a8Sspeer	SET_SIZE(hv_niu_rx_dma_unassign)
394678453a8Sspeer
395678453a8Sspeer	/*
396678453a8Sspeer	 * hv_niu_tx_dma_assign(uint32_t cookie, uint64_t chidx,
397678453a8Sspeer	 *	uint64_t *vchidx)
398678453a8Sspeer	 */
399678453a8Sspeer	ENTRY(hv_niu_tx_dma_assign)
400678453a8Sspeer	mov	%o2, %g1
401678453a8Sspeer	mov	N2NIU_VR_TX_DMA_ASSIGN, %o5
402678453a8Sspeer	ta	FAST_TRAP
403678453a8Sspeer	retl
404678453a8Sspeer	stx	%o1, [%g1]
405678453a8Sspeer	SET_SIZE(hv_niu_tx_dma_assign)
406678453a8Sspeer
407678453a8Sspeer	/*
408678453a8Sspeer	 * hv_niu_tx_dma_unassign(uint32_t cookie, uint64_t vchidx)
409678453a8Sspeer	 */
410678453a8Sspeer	ENTRY(hv_niu_tx_dma_unassign)
411678453a8Sspeer	mov	N2NIU_VR_TX_DMA_UNASSIGN, %o5
412678453a8Sspeer	ta	FAST_TRAP
413678453a8Sspeer	retl
414678453a8Sspeer	nop
415678453a8Sspeer	SET_SIZE(hv_niu_tx_dma_unassign)
416678453a8Sspeer
417678453a8Sspeer	/*
418678453a8Sspeer	 * hv_niu_vrrx_logical_page_conf(uint32_t cookie, uint64_t chidx,
419678453a8Sspeer	 *	uint64_t pgidx, uint64_t raddr, uint64_t size)
420678453a8Sspeer	 */
421678453a8Sspeer	ENTRY(hv_niu_vrrx_logical_page_conf)
422678453a8Sspeer	mov	N2NIU_VRRX_LP_SET, %o5
423678453a8Sspeer	ta	FAST_TRAP
424678453a8Sspeer	retl
425678453a8Sspeer	nop
426678453a8Sspeer	SET_SIZE(hv_niu_vrrx_logical_page_conf)
427678453a8Sspeer
428678453a8Sspeer	/*
429678453a8Sspeer	 * hv_niu_vrrx_logical_page_info(uint32_t cookie, uint64_t chidx,
430678453a8Sspeer	 *	uint64_t pgidx, uint64_t *raddr, uint64_t *size)
431678453a8Sspeer	 */
432678453a8Sspeer	ENTRY(hv_niu_vrrx_logical_page_info)
433678453a8Sspeer	mov	%o3, %g1
434678453a8Sspeer	mov	%o4, %g2
435678453a8Sspeer	mov	N2NIU_VRRX_LP_GET, %o5
436678453a8Sspeer	ta	FAST_TRAP
437678453a8Sspeer	stx	%o1, [%g1]
438678453a8Sspeer	retl
439678453a8Sspeer	stx	%o2, [%g2]
440678453a8Sspeer	SET_SIZE(hv_niu_vrrx_logical_page_info)
441678453a8Sspeer
442678453a8Sspeer	/*
443678453a8Sspeer	 * hv_niu_vrtx_logical_page_conf(uint32_t cookie, uint64_t chidx,
444678453a8Sspeer	 *	uint64_t pgidx, uint64_t raddr, uint64_t size)
445678453a8Sspeer	 */
446678453a8Sspeer	ENTRY(hv_niu_vrtx_logical_page_conf)
447678453a8Sspeer	mov	N2NIU_VRTX_LP_SET, %o5
448678453a8Sspeer	ta	FAST_TRAP
449678453a8Sspeer	retl
450678453a8Sspeer	nop
451678453a8Sspeer	SET_SIZE(hv_niu_vrtx_logical_page_conf)
452678453a8Sspeer
453678453a8Sspeer	/*
454678453a8Sspeer	 * hv_niu_vrtx_logical_page_info(uint32_t cookie, uint64_t chidx,
455678453a8Sspeer	 *	uint64_t pgidx, uint64_t *raddr, uint64_t *size)
456678453a8Sspeer	 */
457678453a8Sspeer	ENTRY(hv_niu_vrtx_logical_page_info)
458678453a8Sspeer	mov	%o3, %g1
459678453a8Sspeer	mov	%o4, %g2
460678453a8Sspeer	mov	N2NIU_VRTX_LP_GET, %o5
461678453a8Sspeer	ta	FAST_TRAP
462678453a8Sspeer	stx	%o1, [%g1]
463678453a8Sspeer	retl
464678453a8Sspeer	stx	%o2, [%g2]
465678453a8Sspeer	SET_SIZE(hv_niu_vrtx_logical_page_info)
466678453a8Sspeer
467678453a8Sspeer	/*
468678453a8Sspeer	 * hv_niu_vrrx_getinfo(uint32_t cookie, uint64_t vridx,
469678453a8Sspeer	 *	uint64_t *group, uint64_t *logdev)
470678453a8Sspeer	 */
471678453a8Sspeer	ENTRY(hv_niu_vrrx_getinfo)
472678453a8Sspeer	mov	%o2, %g1
473678453a8Sspeer	mov	%o3, %g2
474678453a8Sspeer	mov	N2NIU_VRRX_GET_INFO, %o5
475678453a8Sspeer	ta	FAST_TRAP
476678453a8Sspeer	stx	%o2, [%g2]
477678453a8Sspeer	retl
478678453a8Sspeer	stx	%o1, [%g1]
479678453a8Sspeer	SET_SIZE(hv_niu_vrrx_getinfo)
480678453a8Sspeer
481678453a8Sspeer	/*
482678453a8Sspeer	 * hv_niu_vrtx_getinfo(uint32_t cookie, uint64_t vridx,
483678453a8Sspeer	 *	uint64_t *group, uint64_t *logdev)
484678453a8Sspeer	 */
485678453a8Sspeer	ENTRY(hv_niu_vrtx_getinfo)
486678453a8Sspeer	mov	%o2, %g1
487678453a8Sspeer	mov	%o3, %g2
488678453a8Sspeer	mov	N2NIU_VRTX_GET_INFO, %o5
489678453a8Sspeer	ta	FAST_TRAP
490678453a8Sspeer	stx	%o2, [%g2]
491678453a8Sspeer	retl
492678453a8Sspeer	stx	%o1, [%g1]
493678453a8Sspeer	SET_SIZE(hv_niu_vrtx_getinfo)
494678453a8Sspeer
495678453a8Sspeer	/*
496678453a8Sspeer	 * hv_niu_vrrx_set_ino(uint32_t cookie, uint64_t vridx, uint32_t ino)
497678453a8Sspeer	 */
498678453a8Sspeer	ENTRY(hv_niu_vrrx_set_ino)
499678453a8Sspeer	mov	N2NIU_VRRX_SET_INO, %o5
500678453a8Sspeer	ta	FAST_TRAP
501678453a8Sspeer	retl
502678453a8Sspeer	nop
503678453a8Sspeer	SET_SIZE(hv_niu_vrrx_set_ino)
504678453a8Sspeer
505678453a8Sspeer	/*
506678453a8Sspeer	 * hv_niu_vrtx_set_ino(uint32_t cookie, uint64_t vridx, uint32_t ino)
507678453a8Sspeer	 */
508678453a8Sspeer	ENTRY(hv_niu_vrtx_set_ino)
509678453a8Sspeer	mov	N2NIU_VRTX_SET_INO, %o5
510678453a8Sspeer	ta	FAST_TRAP
511678453a8Sspeer	retl
512678453a8Sspeer	nop
513678453a8Sspeer	SET_SIZE(hv_niu_vrtx_set_ino)
514678453a8Sspeer
515678453a8Sspeer	/*
51652ccf843Smisaki	 * hv_niu_vrrx_param_get(uint32_t cookie, uint64_t vridx,
51752ccf843Smisaki	 *	uint64_t param, uint64_t *value)
518678453a8Sspeer	 *
519678453a8Sspeer	 */
520678453a8Sspeer	ENTRY(hv_niu_vrrx_param_get)
521678453a8Sspeer	mov	%o3, %g1
522678453a8Sspeer	mov	N2NIU_VRRX_PARAM_GET, %o5
523678453a8Sspeer	ta	FAST_TRAP
524678453a8Sspeer	retl
525678453a8Sspeer	stx	%o1, [%g1]
526678453a8Sspeer	SET_SIZE(hv_niu_vrrx_param_get)
527678453a8Sspeer
528678453a8Sspeer	/*
52952ccf843Smisaki	 * hv_niu_vrrx_param_set(uint32_t cookie, uint64_t vridx,
53052ccf843Smisaki	 *	uint64_t param, uint64_t value)
531678453a8Sspeer	 *
532678453a8Sspeer	 */
533678453a8Sspeer	ENTRY(hv_niu_vrrx_param_set)
534678453a8Sspeer	mov	N2NIU_VRRX_PARAM_SET, %o5
535678453a8Sspeer	ta	FAST_TRAP
536678453a8Sspeer	retl
537678453a8Sspeer	nop
538678453a8Sspeer	SET_SIZE(hv_niu_vrrx_param_set)
539678453a8Sspeer
540678453a8Sspeer	/*
54152ccf843Smisaki	 * hv_niu_vrtx_param_get(uint32_t cookie, uint64_t vridx,
54252ccf843Smisaki	 *	uint64_t param, uint64_t *value)
543678453a8Sspeer	 *
544678453a8Sspeer	 */
545678453a8Sspeer	ENTRY(hv_niu_vrtx_param_get)
546678453a8Sspeer	mov	%o3, %g1
547678453a8Sspeer	mov	N2NIU_VRTX_PARAM_GET, %o5
548678453a8Sspeer	ta	FAST_TRAP
549678453a8Sspeer	retl
550678453a8Sspeer	stx	%o1, [%g1]
551678453a8Sspeer	SET_SIZE(hv_niu_vrtx_param_get)
552678453a8Sspeer
553678453a8Sspeer	/*
55452ccf843Smisaki	 * hv_niu_vrtx_param_set(uint32_t cookie, uint64_t vridx,
55552ccf843Smisaki	 *	uint64_t param, uint64_t value)
556678453a8Sspeer	 *
557678453a8Sspeer	 */
558678453a8Sspeer	ENTRY(hv_niu_vrtx_param_set)
559678453a8Sspeer	mov	N2NIU_VRTX_PARAM_SET, %o5
560678453a8Sspeer	ta	FAST_TRAP
561678453a8Sspeer	retl
562678453a8Sspeer	nop
563678453a8Sspeer	SET_SIZE(hv_niu_vrtx_param_set)
564678453a8Sspeer
565*4df55fdeSJanie Lu	/*
566*4df55fdeSJanie Lu	 * Interfaces functions which require the configuration handle.
567*4df55fdeSJanie Lu	 */
568*4df55fdeSJanie Lu	/*
569*4df55fdeSJanie Lu	 * hv_niu__cfgh_rx_logical_page_conf(uint64_t cfgh, uint64_t chidx,
570*4df55fdeSJanie Lu	 *    uint64_t pgidx, uint64_t raddr, uint64_t size)
571*4df55fdeSJanie Lu	 */
572*4df55fdeSJanie Lu	ENTRY(hv_niu_cfgh_rx_logical_page_conf)
573*4df55fdeSJanie Lu	mov	N2NIU_RX_LP_CONF, %o5
574*4df55fdeSJanie Lu	ta	FAST_TRAP
575*4df55fdeSJanie Lu	retl
576*4df55fdeSJanie Lu	nop
577*4df55fdeSJanie Lu	SET_SIZE(hv_niu_cfgh_rx_logical_page_conf)
578*4df55fdeSJanie Lu
579*4df55fdeSJanie Lu	/*
580*4df55fdeSJanie Lu	 * hv_niu__cfgh_rx_logical_page_info(uint64_t cfgh, uint64_t chidx,
581*4df55fdeSJanie Lu	 *    uint64_t pgidx, uint64_t *raddr, uint64_t *size)
582*4df55fdeSJanie Lu	 */
583*4df55fdeSJanie Lu	ENTRY(hv_niu_cfgh_rx_logical_page_info)
584*4df55fdeSJanie Lu	mov	%o3, %g1
585*4df55fdeSJanie Lu	mov	%o4, %g2
586*4df55fdeSJanie Lu	mov	N2NIU_RX_LP_INFO, %o5
587*4df55fdeSJanie Lu	ta	FAST_TRAP
588*4df55fdeSJanie Lu	stx	%o1, [%g1]
589*4df55fdeSJanie Lu	retl
590*4df55fdeSJanie Lu	stx	%o2, [%g2]
591*4df55fdeSJanie Lu	SET_SIZE(hv_niu_cfgh_rx_logical_page_info)
592*4df55fdeSJanie Lu
593*4df55fdeSJanie Lu	/*
594*4df55fdeSJanie Lu	 * hv_niu_cfgh_tx_logical_page_conf(uint64_t cfgh, uint64_t chidx,
595*4df55fdeSJanie Lu	 *    uint64_t pgidx, uint64_t raddr, uint64_t size)
596*4df55fdeSJanie Lu	 */
597*4df55fdeSJanie Lu	ENTRY(hv_niu_cfgh_tx_logical_page_conf)
598*4df55fdeSJanie Lu	mov	N2NIU_TX_LP_CONF, %o5
599*4df55fdeSJanie Lu	ta	FAST_TRAP
600*4df55fdeSJanie Lu	retl
601*4df55fdeSJanie Lu	nop
602*4df55fdeSJanie Lu	SET_SIZE(hv_niu_cfgh_tx_logical_page_conf)
603*4df55fdeSJanie Lu
604*4df55fdeSJanie Lu	/*
605*4df55fdeSJanie Lu	 * hv_niu_cfgh_tx_logical_page_info(uint64_t cfgh, uint64_t chidx,
606*4df55fdeSJanie Lu	 *    uint64_t pgidx, uint64_t *raddr, uint64_t *size)
607*4df55fdeSJanie Lu	 */
608*4df55fdeSJanie Lu	ENTRY(hv_niu_cfgh_tx_logical_page_info)
609*4df55fdeSJanie Lu	mov	%o3, %g1
610*4df55fdeSJanie Lu	mov	%o4, %g2
611*4df55fdeSJanie Lu	mov	N2NIU_TX_LP_INFO, %o5
612*4df55fdeSJanie Lu	ta	FAST_TRAP
613*4df55fdeSJanie Lu	stx	%o1, [%g1]
614*4df55fdeSJanie Lu	retl
615*4df55fdeSJanie Lu	stx	%o2, [%g2]
616*4df55fdeSJanie Lu	SET_SIZE(hv_niu_cfgh_tx_logical_page_info)
617*4df55fdeSJanie Lu
618*4df55fdeSJanie Lu	/*
619*4df55fdeSJanie Lu	 * hv_niu_cfgh_vr_assign(uint64_t cfgh, uint64_t vridx, uint64_t ldc_id,
620*4df55fdeSJanie Lu	 *     uint32_t *cookie)
621*4df55fdeSJanie Lu	 */
622*4df55fdeSJanie Lu	ENTRY(hv_niu_cfgh_vr_assign)
623*4df55fdeSJanie Lu	mov	%o3, %g1
624*4df55fdeSJanie Lu	mov	N2NIU_VR_ASSIGN, %o5
625*4df55fdeSJanie Lu	ta	FAST_TRAP
626*4df55fdeSJanie Lu	retl
627*4df55fdeSJanie Lu	stw	%o1, [%g1]
628*4df55fdeSJanie Lu	SET_SIZE(hv_niu_cfgh_vr_assign)
629*4df55fdeSJanie Lu
6306f45ec7bSml29623#endif	/* lint || __lint */
631da14cebeSEric Cheng
632da14cebeSEric Cheng#endif /*defined(sun4v)*/
633