xref: /titanic_51/usr/src/uts/common/io/tpm/tpm_hcall.s (revision 8d26100c1d185652ac4e12e1b6c2337446ad0746)
1*8d26100cSWyllys Ingersoll/*
2*8d26100cSWyllys Ingersoll * CDDL HEADER START
3*8d26100cSWyllys Ingersoll *
4*8d26100cSWyllys Ingersoll * The contents of this file are subject to the terms of the
5*8d26100cSWyllys Ingersoll * Common Development and Distribution License (the "License").
6*8d26100cSWyllys Ingersoll * You may not use this file except in compliance with the License.
7*8d26100cSWyllys Ingersoll *
8*8d26100cSWyllys Ingersoll * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*8d26100cSWyllys Ingersoll * or http://www.opensolaris.org/os/licensing.
10*8d26100cSWyllys Ingersoll * See the License for the specific language governing permissions
11*8d26100cSWyllys Ingersoll * and limitations under the License.
12*8d26100cSWyllys Ingersoll *
13*8d26100cSWyllys Ingersoll * When distributing Covered Code, include this CDDL HEADER in each
14*8d26100cSWyllys Ingersoll * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*8d26100cSWyllys Ingersoll * If applicable, add the following below this CDDL HEADER, with the
16*8d26100cSWyllys Ingersoll * fields enclosed by brackets "[]" replaced with your own identifying
17*8d26100cSWyllys Ingersoll * information: Portions Copyright [yyyy] [name of copyright owner]
18*8d26100cSWyllys Ingersoll *
19*8d26100cSWyllys Ingersoll * CDDL HEADER END
20*8d26100cSWyllys Ingersoll */
21*8d26100cSWyllys Ingersoll
22*8d26100cSWyllys Ingersoll/*
23*8d26100cSWyllys Ingersoll * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24*8d26100cSWyllys Ingersoll * Use is subject to license terms.
25*8d26100cSWyllys Ingersoll */
26*8d26100cSWyllys Ingersoll
27*8d26100cSWyllys Ingersoll/*
28*8d26100cSWyllys Ingersoll * Hypervisor calls used by tpm driver
29*8d26100cSWyllys Ingersoll */
30*8d26100cSWyllys Ingersoll
31*8d26100cSWyllys Ingersoll#include <sys/asm_linkage.h>
32*8d26100cSWyllys Ingersoll
33*8d26100cSWyllys Ingersoll#if defined(sun4v)
34*8d26100cSWyllys Ingersoll#include <sys/hypervisor_api.h>
35*8d26100cSWyllys Ingersoll
36*8d26100cSWyllys Ingersoll#if defined(lint) || defined(__lint)
37*8d26100cSWyllys Ingersoll
38*8d26100cSWyllys Ingersoll/*ARGSUSED*/
39*8d26100cSWyllys Ingersolluint64_t
40*8d26100cSWyllys Ingersollhcall_tpm_get(uint64_t locality, uint64_t offset, uint64_t size,
41*8d26100cSWyllys Ingersoll    uint64_t *value)
42*8d26100cSWyllys Ingersoll{
43*8d26100cSWyllys Ingersoll	return (0);
44*8d26100cSWyllys Ingersoll}
45*8d26100cSWyllys Ingersoll
46*8d26100cSWyllys Ingersoll/*ARGSUSED*/
47*8d26100cSWyllys Ingersolluint64_t
48*8d26100cSWyllys Ingersollhcall_tpm_put(uint64_t locality, uint64_t offset, uint64_t size,
49*8d26100cSWyllys Ingersoll    uint64_t value)
50*8d26100cSWyllys Ingersoll{
51*8d26100cSWyllys Ingersoll	return (0);
52*8d26100cSWyllys Ingersoll}
53*8d26100cSWyllys Ingersoll
54*8d26100cSWyllys Ingersoll#else  /* lint || __lint */
55*8d26100cSWyllys Ingersoll
56*8d26100cSWyllys Ingersoll/*
57*8d26100cSWyllys Ingersoll * hcall_tpm_get(uint64_t locality, uint64_t offset, uint64_t size,
58*8d26100cSWyllys Ingersoll *     uint64_t *value)
59*8d26100cSWyllys Ingersoll */
60*8d26100cSWyllys Ingersoll	ENTRY(hcall_tpm_get)
61*8d26100cSWyllys Ingersoll	mov	%o3, %g1
62*8d26100cSWyllys Ingersoll	mov	HV_TPM_GET, %o5
63*8d26100cSWyllys Ingersoll	ta	FAST_TRAP
64*8d26100cSWyllys Ingersoll	stx	%o1, [%g1]
65*8d26100cSWyllys Ingersoll	retl
66*8d26100cSWyllys Ingersoll	nop
67*8d26100cSWyllys Ingersoll	SET_SIZE(hcall_tpm_get)
68*8d26100cSWyllys Ingersoll
69*8d26100cSWyllys Ingersoll/*
70*8d26100cSWyllys Ingersoll * uint64_t
71*8d26100cSWyllys Ingersoll * hcall_tpm_put(uint64_t locality, uint64_t offset, uint64_t size,
72*8d26100cSWyllys Ingersoll *     uint64_t value)
73*8d26100cSWyllys Ingersoll */
74*8d26100cSWyllys Ingersoll	ENTRY(hcall_tpm_put)
75*8d26100cSWyllys Ingersoll	mov	HV_TPM_PUT, %o5
76*8d26100cSWyllys Ingersoll	ta	FAST_TRAP
77*8d26100cSWyllys Ingersoll	retl
78*8d26100cSWyllys Ingersoll	nop
79*8d26100cSWyllys Ingersoll	SET_SIZE(hcall_tpm_put)
80*8d26100cSWyllys Ingersoll
81*8d26100cSWyllys Ingersoll#endif /* lint || __lint */
82*8d26100cSWyllys Ingersoll
83*8d26100cSWyllys Ingersoll#endif /* defined(sun4v) */
84