/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2013 Anish Gupta ([email protected])4* All rights reserved.5*6* Redistribution and use in source and binary forms, with or without7* modification, are permitted provided that the following conditions8* are met:9* 1. Redistributions of source code must retain the above copyright10* notice unmodified, this list of conditions, and the following11* disclaimer.12* 2. Redistributions in binary form must reproduce the above copyright13* notice, this list of conditions and the following disclaimer in the14* documentation and/or other materials provided with the distribution.15*16* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR17* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES18* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.19* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,20* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT21* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,22* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY23* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF25* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.26*/2728#ifndef _SVM_H_29#define _SVM_H_3031struct pcpu;32struct svm_softc;33struct svm_vcpu;3435/*36* Guest register state that is saved outside the VMCB.37*/38struct svm_regctx {39register_t sctx_rbp;40register_t sctx_rbx;41register_t sctx_rcx;42register_t sctx_rdx;43register_t sctx_rdi;44register_t sctx_rsi;45register_t sctx_r8;46register_t sctx_r9;47register_t sctx_r10;48register_t sctx_r11;49register_t sctx_r12;50register_t sctx_r13;51register_t sctx_r14;52register_t sctx_r15;53register_t sctx_dr0;54register_t sctx_dr1;55register_t sctx_dr2;56register_t sctx_dr3;5758register_t host_dr0;59register_t host_dr1;60register_t host_dr2;61register_t host_dr3;62register_t host_dr6;63register_t host_dr7;64uint64_t host_debugctl;65};6667void svm_launch(uint64_t pa, struct svm_regctx *gctx, struct pcpu *pcpu);68#ifdef BHYVE_SNAPSHOT69void svm_set_tsc_offset(struct svm_vcpu *vcpu, uint64_t offset);70#endif7172#endif /* _SVM_H_ */737475