1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 /* 27 * Hypervisor calls called by ncp driver. 28 */ 29 30 #include <sys/asm_linkage.h> 31 #include <sys/hypervisor_api.h> 32 #include <sys/n2rng.h> 33 34 /* 35 * hv_rng_get_diag_control() 36 */ 37 ENTRY(hv_rng_get_diag_control) 38 mov HV_RNG_GET_DIAG_CONTROL, %o5 39 ta FAST_TRAP 40 retl 41 nop 42 SET_SIZE(hv_rng_get_diag_control) 43 44 /* 45 * hv_rng_ctl_read(uint64_t ctlregsptr_ra, uint64_t *rstate, 46 * uint64_t *tdelta) 47 */ 48 ENTRY(hv_rng_ctl_read) 49 mov %o1, %o3 50 mov %o2, %o4 51 mov HV_RNG_CTL_READ, %o5 52 ta FAST_TRAP 53 stx %o1, [%o3] 54 retl 55 stx %o2, [%o4] 56 SET_SIZE(hv_rng_ctl_read) 57 58 /* 59 * hv_rng_ctl_read_v2(uint64_t ctlregsptr_ra, uint64_t rngid, 60 * uint64_t *rstate, uint64_t *tdelta, uint64_t *wdelta, 61 * uint64_t *wstatus) 62 */ 63 ENTRY(hv_rng_ctl_read_v2) 64 save %sp, -SA(MINFRAME64), %sp 65 mov %i0, %o0 66 mov %i1, %o1 67 mov HV_RNG_CTL_READ, %o5 68 ta FAST_TRAP 69 mov %o0, %i0 ! trap status 70 stx %o1, [%i2] ! save status 71 stx %o2, [%i3] ! save delta 72 stx %o3, [%i4] ! save watchdog 73 stx %o4, [%i5] ! save write status 74 ret 75 restore 76 SET_SIZE(hv_rng_ctl_read_v2) 77 78 /* 79 * hv_rng_ctl_write(uint64_t ctlregsptr_ra, uint64_t nstate, 80 * uint64_t wtimeout, uint64_t *tdelta) 81 */ 82 ENTRY(hv_rng_ctl_write) 83 mov %o3, %o4 84 mov HV_RNG_CTL_WRITE, %o5 85 ta FAST_TRAP 86 retl 87 stx %o1, [%o4] 88 SET_SIZE(hv_rng_ctl_write) 89 90 /* 91 * hv_rng_ctl_write_v2(uint64_t ctlregsptr_ra, uint64_t nstate, 92 * uint64_t wtimeout, uint64_t rngid) 93 */ 94 ENTRY(hv_rng_ctl_write_v2) 95 mov HV_RNG_CTL_WRITE, %o5 96 ta FAST_TRAP 97 retl 98 nop 99 SET_SIZE(hv_rng_ctl_write_v2) 100 101 /* 102 * hv_rng_data_read_diag(uint64_t buffer_ra, uint64_t sz, 103 * uint64_t *tdelta) 104 */ 105 ENTRY(hv_rng_data_read_diag) 106 mov %o2, %o4 107 mov HV_RNG_DATA_READ_DIAG, %o5 108 ta FAST_TRAP 109 retl 110 stx %o1, [%o4] 111 SET_SIZE(hv_rng_data_read_diag) 112 113 /* 114 * hv_rng_data_read_diag_v2(uint64_t buffer_ra, uint64_t sz, 115 * uint64_t rngid, uint64_t *tdelta) 116 */ 117 ENTRY(hv_rng_data_read_diag_v2) 118 mov %o3, %o4 119 mov HV_RNG_DATA_READ_DIAG, %o5 120 ta FAST_TRAP 121 retl 122 stx %o1, [%o4] 123 SET_SIZE(hv_rng_data_read_diag_v2) 124 125 /* 126 * hv_rng_data_read(uint64_t buffer_ra, uint64_t *tdelta) 127 */ 128 ENTRY(hv_rng_data_read) 129 mov %o1, %o4 130 mov HV_RNG_DATA_READ, %o5 131 ta FAST_TRAP 132 retl 133 stx %o1, [%o4] 134 SET_SIZE(hv_rng_data_read) 135