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