xref: /titanic_50/usr/src/uts/sun4v/io/n2rng/n2rng_hcall.s (revision 741c280d5486676df48cd5d5e8ed8d92eac714a8)
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