1*4d846d26SWarner Losh /*- SPDX-License-Identifier: BSD-2-Clause 26cf00ef8SSouradeep Chakrabarti * 36cf00ef8SSouradeep Chakrabarti * Copyright (c) 2022 Microsoft Corp. 46cf00ef8SSouradeep Chakrabarti * 56cf00ef8SSouradeep Chakrabarti * Redistribution and use in source and binary forms, with or without 66cf00ef8SSouradeep Chakrabarti * modification, are permitted provided that the following conditions 76cf00ef8SSouradeep Chakrabarti * are met: 86cf00ef8SSouradeep Chakrabarti * 1. Redistributions of source code must retain the above copyright 96cf00ef8SSouradeep Chakrabarti * notice unmodified, this list of conditions, and the following 106cf00ef8SSouradeep Chakrabarti * disclaimer. 116cf00ef8SSouradeep Chakrabarti * 2. Redistributions in binary form must reproduce the above copyright 126cf00ef8SSouradeep Chakrabarti * notice, this list of conditions and the following disclaimer in the 136cf00ef8SSouradeep Chakrabarti * documentation and/or other materials provided with the distribution. 146cf00ef8SSouradeep Chakrabarti * 156cf00ef8SSouradeep Chakrabarti * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 166cf00ef8SSouradeep Chakrabarti * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 176cf00ef8SSouradeep Chakrabarti * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 186cf00ef8SSouradeep Chakrabarti * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 196cf00ef8SSouradeep Chakrabarti * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 206cf00ef8SSouradeep Chakrabarti * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 216cf00ef8SSouradeep Chakrabarti * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 226cf00ef8SSouradeep Chakrabarti * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 236cf00ef8SSouradeep Chakrabarti * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 246cf00ef8SSouradeep Chakrabarti * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 256cf00ef8SSouradeep Chakrabarti */ 266cf00ef8SSouradeep Chakrabarti 276cf00ef8SSouradeep Chakrabarti #ifndef _HYPERV_MACHDEP_H_ 286cf00ef8SSouradeep Chakrabarti #define _HYPERV_MACHDEP_H_ 296cf00ef8SSouradeep Chakrabarti 306cf00ef8SSouradeep Chakrabarti #include <sys/param.h> 316cf00ef8SSouradeep Chakrabarti 326cf00ef8SSouradeep Chakrabarti typedef uint32_t u32; 336cf00ef8SSouradeep Chakrabarti typedef uint64_t u64; 346cf00ef8SSouradeep Chakrabarti struct hv_get_vp_registers_output { 356cf00ef8SSouradeep Chakrabarti union { 366cf00ef8SSouradeep Chakrabarti struct { 376cf00ef8SSouradeep Chakrabarti u32 a; 386cf00ef8SSouradeep Chakrabarti u32 b; 396cf00ef8SSouradeep Chakrabarti u32 c; 406cf00ef8SSouradeep Chakrabarti u32 d; 416cf00ef8SSouradeep Chakrabarti } as32 __packed; 426cf00ef8SSouradeep Chakrabarti struct { 436cf00ef8SSouradeep Chakrabarti u64 low; 446cf00ef8SSouradeep Chakrabarti u64 high; 456cf00ef8SSouradeep Chakrabarti } as64 __packed; 466cf00ef8SSouradeep Chakrabarti }; 476cf00ef8SSouradeep Chakrabarti }; 486cf00ef8SSouradeep Chakrabarti 496cf00ef8SSouradeep Chakrabarti uint64_t hypercall_md(volatile void *hc_addr, u64 in_val, 506cf00ef8SSouradeep Chakrabarti u64 in_paddr, u64 out_paddr); 516cf00ef8SSouradeep Chakrabarti void hv_get_vpreg_128(u32, struct hv_get_vp_registers_output *); 526cf00ef8SSouradeep Chakrabarti void arm_hv_set_vreg(u32 msr, u64 val); 536cf00ef8SSouradeep Chakrabarti #define WRMSR(msr, val) arm_hv_set_vreg(msr, val) 546cf00ef8SSouradeep Chakrabarti u64 arm_hv_get_vreg(u32 msr); 556cf00ef8SSouradeep Chakrabarti #define RDMSR(msr) arm_hv_get_vreg(msr) 566cf00ef8SSouradeep Chakrabarti 576cf00ef8SSouradeep Chakrabarti #endif /* !_HYPERV_MACHDEP_H_ */ 58