1fec509a0Sgm89044/* 2fec509a0Sgm89044 * CDDL HEADER START 3fec509a0Sgm89044 * 4fec509a0Sgm89044 * The contents of this file are subject to the terms of the 5fec509a0Sgm89044 * Common Development and Distribution License (the "License"). 6fec509a0Sgm89044 * You may not use this file except in compliance with the License. 7fec509a0Sgm89044 * 8fec509a0Sgm89044 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9fec509a0Sgm89044 * or http://www.opensolaris.org/os/licensing. 10fec509a0Sgm89044 * See the License for the specific language governing permissions 11fec509a0Sgm89044 * and limitations under the License. 12fec509a0Sgm89044 * 13fec509a0Sgm89044 * When distributing Covered Code, include this CDDL HEADER in each 14fec509a0Sgm89044 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15fec509a0Sgm89044 * If applicable, add the following below this CDDL HEADER, with the 16fec509a0Sgm89044 * fields enclosed by brackets "[]" replaced with your own identifying 17fec509a0Sgm89044 * information: Portions Copyright [yyyy] [name of copyright owner] 18fec509a0Sgm89044 * 19fec509a0Sgm89044 * CDDL HEADER END 20fec509a0Sgm89044 */ 21fec509a0Sgm89044/* 22fec509a0Sgm89044 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23fec509a0Sgm89044 * Use is subject to license terms. 24fec509a0Sgm89044 */ 25fec509a0Sgm89044 26fec509a0Sgm89044#pragma ident "%Z%%M% %I% %E% SMI" 27fec509a0Sgm89044 28fec509a0Sgm89044/* 29fec509a0Sgm89044 * Hypervisor calls called by ncp driver. 30fec509a0Sgm89044 */ 31fec509a0Sgm89044 32fec509a0Sgm89044#include <sys/asm_linkage.h> 33fec509a0Sgm89044#include <sys/hypervisor_api.h> 34fec509a0Sgm89044#include <sys/n2rng.h> 35fec509a0Sgm89044 36fec509a0Sgm89044#if defined(lint) || defined(__lint) 37fec509a0Sgm89044 38fec509a0Sgm89044/*ARGSUSED*/ 39fec509a0Sgm89044uint64_t 40fec509a0Sgm89044hv_rng_get_diag_control() 41fec509a0Sgm89044{ return (0); } 42fec509a0Sgm89044 43fec509a0Sgm89044/*ARGSUSED*/ 44fec509a0Sgm89044uint64_t 45fec509a0Sgm89044hv_rng_ctl_read(uint64_t ctlregsptr_ra, uint64_t *rstate, uint64_t *tdelta) 46fec509a0Sgm89044{ return (0); } 47fec509a0Sgm89044 48fec509a0Sgm89044/*ARGSUSED*/ 49fec509a0Sgm89044uint64_t 50*741c280dStwelkehv_rng_ctl_read_v2(uint64_t ctlregsptr_ra, uint64_t rngid, uint64_t *rstate, 51*741c280dStwelke uint64_t *tdelta, uint64_t *wdelta, uint64_t *wstate) 52*741c280dStwelke{ return (0); } 53*741c280dStwelke 54*741c280dStwelke/*ARGSUSED*/ 55*741c280dStwelkeuint64_t 56fec509a0Sgm89044hv_rng_ctl_write(uint64_t ctlregsptr_ra, uint64_t nstate, uint64_t wtimeout, 57fec509a0Sgm89044 uint64_t *tdelta) 58fec509a0Sgm89044{ return (0); } 59fec509a0Sgm89044 60fec509a0Sgm89044/*ARGSUSED*/ 61fec509a0Sgm89044uint64_t 62*741c280dStwelkehv_rng_ctl_write_v2(uint64_t ctlregsptr_ra, uint64_t nstate, uint64_t wtimeout, 63*741c280dStwelke uint64_t rngid) 64*741c280dStwelke{ return (0); } 65*741c280dStwelke 66*741c280dStwelke/*ARGSUSED*/ 67*741c280dStwelkeuint64_t 68fec509a0Sgm89044hv_rng_data_read_diag(uint64_t buffer_ra, uint64_t sz, uint64_t *tdelta) 69fec509a0Sgm89044{ return (0); } 70fec509a0Sgm89044 71fec509a0Sgm89044/*ARGSUSED*/ 72fec509a0Sgm89044uint64_t 73*741c280dStwelkehv_rng_data_read_diag_v2(uint64_t buffer_ra, uint64_t sz, uint64_t rngid, 74*741c280dStwelke uint64_t *tdelta) 75*741c280dStwelke{ return (0); } 76*741c280dStwelke 77*741c280dStwelke/*ARGSUSED*/ 78*741c280dStwelkeuint64_t 79fec509a0Sgm89044hv_rng_data_read(uint64_t buffer_ra, uint64_t *tdelta) 80fec509a0Sgm89044{ return (0); } 81fec509a0Sgm89044 82fec509a0Sgm89044#else /* lint || __lint */ 83fec509a0Sgm89044 84fec509a0Sgm89044 /* 85fec509a0Sgm89044 * hv_rng_get_diag_control() 86fec509a0Sgm89044 */ 87fec509a0Sgm89044 ENTRY(hv_rng_get_diag_control) 88fec509a0Sgm89044 mov HV_RNG_GET_DIAG_CONTROL, %o5 89fec509a0Sgm89044 ta FAST_TRAP 90fec509a0Sgm89044 retl 91fec509a0Sgm89044 nop 92fec509a0Sgm89044 SET_SIZE(hv_rng_get_diag_control) 93fec509a0Sgm89044 94fec509a0Sgm89044 /* 95fec509a0Sgm89044 * hv_rng_ctl_read(uint64_t ctlregsptr_ra, uint64_t *rstate, 96fec509a0Sgm89044 * uint64_t *tdelta) 97fec509a0Sgm89044 */ 98fec509a0Sgm89044 ENTRY(hv_rng_ctl_read) 99fec509a0Sgm89044 mov %o1, %o3 100fec509a0Sgm89044 mov %o2, %o4 101fec509a0Sgm89044 mov HV_RNG_CTL_READ, %o5 102fec509a0Sgm89044 ta FAST_TRAP 103fec509a0Sgm89044 stx %o1, [%o3] 104fec509a0Sgm89044 retl 105fec509a0Sgm89044 stx %o2, [%o4] 106fec509a0Sgm89044 SET_SIZE(hv_rng_ctl_read) 107fec509a0Sgm89044 108fec509a0Sgm89044 /* 109*741c280dStwelke * hv_rng_ctl_read_v2(uint64_t ctlregsptr_ra, uint64_t rngid, 110*741c280dStwelke * uint64_t *rstate, uint64_t *tdelta, uint64_t *wdelta, 111*741c280dStwelke * uint64_t *wstatus) 112*741c280dStwelke */ 113*741c280dStwelke ENTRY(hv_rng_ctl_read_v2) 114*741c280dStwelke save %sp, -SA(MINFRAME64), %sp 115*741c280dStwelke mov %i0, %o0 116*741c280dStwelke mov %i1, %o1 117*741c280dStwelke mov HV_RNG_CTL_READ, %o5 118*741c280dStwelke ta FAST_TRAP 119*741c280dStwelke mov %o0, %i0 ! trap status 120*741c280dStwelke stx %o1, [%i2] ! save status 121*741c280dStwelke stx %o2, [%i3] ! save delta 122*741c280dStwelke stx %o3, [%i4] ! save watchdog 123*741c280dStwelke stx %o4, [%i5] ! save write status 124*741c280dStwelke ret 125*741c280dStwelke restore 126*741c280dStwelke SET_SIZE(hv_rng_ctl_read_v2) 127*741c280dStwelke 128*741c280dStwelke /* 129fec509a0Sgm89044 * hv_rng_ctl_write(uint64_t ctlregsptr_ra, uint64_t nstate, 130fec509a0Sgm89044 * uint64_t wtimeout, uint64_t *tdelta) 131fec509a0Sgm89044 */ 132fec509a0Sgm89044 ENTRY(hv_rng_ctl_write) 133fec509a0Sgm89044 mov %o3, %o4 134fec509a0Sgm89044 mov HV_RNG_CTL_WRITE, %o5 135fec509a0Sgm89044 ta FAST_TRAP 136fec509a0Sgm89044 retl 137fec509a0Sgm89044 stx %o1, [%o4] 138fec509a0Sgm89044 SET_SIZE(hv_rng_ctl_write) 139fec509a0Sgm89044 140fec509a0Sgm89044 /* 141*741c280dStwelke * hv_rng_ctl_write_v2(uint64_t ctlregsptr_ra, uint64_t nstate, 142*741c280dStwelke * uint64_t wtimeout, uint64_t rngid) 143*741c280dStwelke */ 144*741c280dStwelke ENTRY(hv_rng_ctl_write_v2) 145*741c280dStwelke mov HV_RNG_CTL_WRITE, %o5 146*741c280dStwelke ta FAST_TRAP 147*741c280dStwelke retl 148*741c280dStwelke nop 149*741c280dStwelke SET_SIZE(hv_rng_ctl_write_v2) 150*741c280dStwelke 151*741c280dStwelke /* 152fec509a0Sgm89044 * hv_rng_data_read_diag(uint64_t buffer_ra, uint64_t sz, 153fec509a0Sgm89044 * uint64_t *tdelta) 154fec509a0Sgm89044 */ 155fec509a0Sgm89044 ENTRY(hv_rng_data_read_diag) 156fec509a0Sgm89044 mov %o2, %o4 157fec509a0Sgm89044 mov HV_RNG_DATA_READ_DIAG, %o5 158fec509a0Sgm89044 ta FAST_TRAP 159fec509a0Sgm89044 retl 160fec509a0Sgm89044 stx %o1, [%o4] 161fec509a0Sgm89044 SET_SIZE(hv_rng_data_read_diag) 162fec509a0Sgm89044 163fec509a0Sgm89044 /* 164*741c280dStwelke * hv_rng_data_read_diag_v2(uint64_t buffer_ra, uint64_t sz, 165*741c280dStwelke * uint64_t rngid, uint64_t *tdelta) 166*741c280dStwelke */ 167*741c280dStwelke ENTRY(hv_rng_data_read_diag_v2) 168*741c280dStwelke mov %o3, %o4 169*741c280dStwelke mov HV_RNG_DATA_READ_DIAG, %o5 170*741c280dStwelke ta FAST_TRAP 171*741c280dStwelke retl 172*741c280dStwelke stx %o1, [%o4] 173*741c280dStwelke SET_SIZE(hv_rng_data_read_diag_v2) 174*741c280dStwelke 175*741c280dStwelke /* 176fec509a0Sgm89044 * hv_rng_data_read(uint64_t buffer_ra, uint64_t *tdelta) 177fec509a0Sgm89044 */ 178fec509a0Sgm89044 ENTRY(hv_rng_data_read) 179fec509a0Sgm89044 mov %o1, %o4 180fec509a0Sgm89044 mov HV_RNG_DATA_READ, %o5 181fec509a0Sgm89044 ta FAST_TRAP 182fec509a0Sgm89044 retl 183fec509a0Sgm89044 stx %o1, [%o4] 184fec509a0Sgm89044 SET_SIZE(hv_rng_data_read) 185fec509a0Sgm89044 186fec509a0Sgm89044#endif /* lint || __lint */ 187