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