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